山图3d地球 脱壳修复 会员逆向〈第六次发帖〉(适合新手)
本帖最后由 ywlYWL 于 2022-2-11 01:13 编辑这次有论友问我这个软件没有思路,我上一个红包助手 也有论友说我不够细节,一头雾水。那好,我这次超详细来了,你有勇气看完吗?
本次的工具有:
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 点击跳转
进入这个类,
完了,芭比Q了
普通小白会觉得 没有 getispro 哎 怎么赋值
这时,我把它转换为java 代码 你看看
ispro这是一个一个变量!!!!
这是一个被static修饰的变量 !!!
也就是说可以直接被其他类 调用。
那么怎么办?
在这个类里面是没有值的,那么在软件开启后
一定有个东西会先连网再从数据库里面获取信息
判断是否为会员,将判断过后的值给ispro
其他需要会员功能的事件就会先调用ispro
判断是不是,是才能够使用会员功能!
过程,代码,分析已经到位!
我们点击中偏左上角的导航按钮
长按ispro
选着有put 的那个
查看是那些代码给ispro赋值了的
有这样类给ispro赋值了,
这我给大家讲个悄悄话,后缀有activity是界面相关的类,这里可以联系我在上面写的原理
splashxxxxx是启动页面
mainactivity 是主界面
orderactivity 是订单界面
wxpayentryactivity 是进去微信支付结果界面
(别问我怎么知道的,问就是百度翻译)
我们现在干嘛?
我们要找到给 ispro 赋值为 真 的类
那可以去订单界面或者微信支付界面找
我在订单界面找到了
转换为smali代码就是这段
就是这一段(我选中的)就是给ispro赋值为真的代码
复制下来
我们根据之前activity的生命周期
哪个启动页面就是链接网络 从数据库中获得会员信息 给ispro
在主界面 我们可以从这里修改
返回到刚刚搜索到的activity 界面
点击mainactivity
再点导航找到oncreate
点进去
把刚刚 复制的赋值代码粘贴到这个oncreate方法下
退出保存
为啥这里就OK了?
因为在启动页面得到的ispro是我们不想要的
我们在maintivity 主页面自己赋值
但是我们写下了代码 他会不会运行呢?
那就要看写在哪里了,
根据上面写到的原理,oncreate是进入主界面必须运行的一段代码,我们在这写下我们复制的赋值代码,那就一定会运行。
所以就破解成功了!
讲到这里,如果你不会,那就不是我的问题了,毕竟,我也只是个大一学生。
平时爱研究而已。
这篇可以说是保姆级教程。每一步都有逻辑可循
工具百度都有要动手百度
原文件下载:https://www.wandoujia.com/apps/8193743
码字不易,评分再走!
现在我手机不好操作,如果帖子有问题,过几天就会改回来 写的很详细,
推荐使用markdown编辑,
布局漂亮还有导航的目录。
推荐用md编辑器编辑完再复制过来
此外最后几张图没有正确插入,记得上传图片后插入文章里 本帖最后由 abszqd 于 2022-2-12 22:21 编辑
ywlYWL 发表于 2022-2-12 21:43
你脱壳有问题
有点郁闷了,我用dex32或者64的脱壳以后都是11个文件,为啥你是15个文件啊。我安装文件以后脱壳或者直接下载安装包脱壳以后都是11个dex文件。安装包用的就是你提供的豌豆荚下载来的程序,,用的手机是vivo iqoo7。实在想不出来还有啥地方有问题。 牛逼plus 成品来个就好了! 感谢分享,学习 谢谢分享 楼主辛苦了
谢谢分享 楼主好有耐心和爱心 太棒了,学到许多 方法挺详细的,照着操作一下 看了半天 支持一下 非常详细,谢谢分享