某安卓APP脱壳修复破解会员
也有论友说我不够细节,一头雾水。那好,我这次超详细来了,你有勇气看完吗?本次的工具有:
mt管理器 (没会员的用np管理器)
blackdex 32 (脱壳用的)本次用到的原理:
1.加壳原理
将源apk加密和壳Dex(负责解密)合并成新的Dex。
主要步骤:
用加密算法对源apk加密;再与壳apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件即可。
他的主要工作是:负责解密源apk,然后加载apk,让其正常运行起来。2.Activity生命周期-1.启动Activity:系统会先调用onCreate方法,然后 调用onStart方法,最后调用onResume,Activity 进入运行状态。
-2.当前Activity被其他Activity覆盖其上或被锁屏:系 统会调用onPause方法,暂停当前Activity的执行。
-3.当前Activity由被覆盖状态回到前台或解锁屏:系 统会调用onResume方法,再次进入运行状态。
-4.当前Activity转到新的Activity界面或按Home键回 到主屏,自身退居后台:系统会先调用onPause方 法,然后调用onStop方法,进入停滞状态。
-5.用户后退回到此Activity:系统会先调用onRestart 方法,然后调用onStart方法,最后调用onResume 方法,再次进入运行状态。
-6.当前Activity处于被覆盖状态或者后台不可见状 态,即第2步和第4步,系统内存不足,杀死当前 Activity,而后用户退回当前Activity:再次调用 onCreate方法、onStart方法、onResume方法,进 入运行状态。
-7.用户退出当前Activity:系统先调用onPause方 法,然后调用onStop方法,最后调用onDestory方 法,结束当前Activity。3.java static关键字的作用在java中,static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能;被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
教程开始:
由于这个软件是被加了了的壳的。
所以这个兄弟没有思路应该是没有脱壳,在加了密的dex文件里找,当然会没思路。
我们应该先脱壳!脱壳篇:
用mt查壳 发现是腾讯御安全!
用脱壳工具脱壳!
脱壳工具有很多:
1.云注入
2.blackdex32或者blackdex64
3.反射大师 (需要框架)我用的blackdex32
脱壳的设置是:
hook 勾选
深度脱壳 不勾选
脱好壳之后用mt打开脱好壳的路径(每个人的可能不一样)
用mt的重命名功能(全部选中)
再把classes1的改成classes(这次只改一个)
像这样。
接下来就是脱壳修复工作了。
我们换mt另一边 提取 3D地球apk打开
再打开dex,全选打开之后选最后一个类
点开这个wrapperproxyapplication 这个类
里面包含入口我们要把真正的入口找到
我选中的就是正真的入口!复制下来
退出。
再打开Androiodmanifest.xml
我的在69行(用np管理器的不在这一行)
将我选中的部分修改为我们刚刚找到的入口
退出 保存 切记将 自动签名取消
然后删掉加固残留文件这些(右边)
你需要在这些文件夹下找
/
/assets/
/lib/arm64-v8a/
/lib/armeabi/
/lib/armeabi-v7a/
找到后删掉就行但是还是不能勾选自动签名
之后退出
就是这个样子 点开功能
然后去除签名检验 (会员功能,用np代替)
然后就这样
安装这个脱壳后的apk能打开没闪退就说明成功!
咱们的脱壳修复篇完结逆向代码篇现在开始咱们的代码分析了
我会讲的非常详细 ,请耐心看完。先打开软件,熟悉软件内容。
我发现这个软件逆向过后 会通过 普通的io生成文件——结果就是 你现在把逆向版删掉 安装只不过被mt签过名的正版
打开还是vip所以我现在无法给大家展示没有会员的提示有点小难过熟悉完之后我们用mt 搜索 会员
这一堆结果当中,咱们要学会分轻重缓急
什么为重呢?
那就要看我们的需求!
我们是能使用会员功能,也就是说你要成为会员
哪个结果是成为会员才有的功能或者提示呢?
答案很明显——您已经是会员了,感谢您的支持
点开它
如果不懂可以看看java代码
这个意思也是一样的
调用一个判断ispro 是不是会员
是 就会弹出 您已经是会员了
那普通的小白就会认为只要把这个
关键跳的判断删掉 if-eqz v0,xxx
这样代码至上而下的运行
不就会弹出"您已经是会员了,感谢支持" 了吗?
事实的确如此,但是别忘了我们的需求!
要成功运行 会员功能!而不是成功运行这一句话!
所以关键的判断就是 ispro 了!
长按ispro 点击跳转
有这样类给ispro赋值了,
这我给大家讲个悄悄话,后缀有activity是界面相关的类,这里可以联系我在上面写的原理
splashxxxxx是启动页面
mainactivity 是主界面
orderactivity 是订单界面
wxpayentryactivity 是进去微信支付结果界面
(别问我怎么知道的,问就是百度翻译)
我们现在干嘛?
我们要找到给 ispro 赋值为 真 的类
那可以去订单界面或者微信支付界面找
我在订单界面找到了
转换为smali代码就是这段
就是这一段(我选中的)就是给ispro赋值为真的代码
复制下来
我们根据之前activity的生命周期
哪个启动页面就是链接网络 从数据库中获得会员信息 给ispro
在主界面 我们可以从这里修改
返回到刚刚搜索到的activity 界面
点击mainactivity
再点导航找到oncreate
点进去
把刚刚 复制的赋值代码粘贴到这个oncreate方法下
退出保存
为啥这里就OK了?
因为在启动页面得到的ispro是我们不想要的
我们在maintivity 主页面自己赋值
但是我们写下了代码 他会不会运行呢?
那就要看写在哪里了,
根据上面写到的原理,oncreate是进入主界面必须运行的一段代码,我们在这写下我们复制的赋值代码,那就一定会运行。
所以就逆向成功了!
讲到这里,如果你不会,那就不是我的问题了,毕竟,我也只是个大一学生。
平时爱研究而已。
这篇可以说是保姆级教程。每一步都有逻辑可循
论坛的繁荣离不开你们的热心分享 谢谢分享 感谢楼主 回复,顶帖,赚币,谢谢楼主 感谢楼主 感谢楼主 谢谢分享 谢谢大神的奉献 感谢楼主