【安卓逆向】360壳过反调试+dump dex文件以及简单修复

旧街凉风 提交于 2020-02-21 10:15:19

mmap函数下段,然后F9运行断下,然后F8往下,一直运行到这里:在这里插入图片描述
F7进来,在R2寄存器这里打一个断点:在这里插入图片描述
F9运行到这里,然后F7进来;在这里插入图片描述
F8往下走,这里有比较指令:在这里插入图片描述这个函数的返回值在R0里面存储,(可以直接把光标放在cmp那条指令然后F4跳过去 )在这里插入图片描述把R0置零:在这里插入图片描述
置零之后呢,F9:在这里插入图片描述
再一次F8:继续在mmap函数末尾断下,然后继续F8:来到这里:在这里插入图片描述紧接着F9,继续来到mmap在这里插入图片描述
然后继续F8:发现还是libc.so,继续F9,然后F8,知道来到libjiagu.so:

(注意,这是第二处反调试的点,虽然后逻辑代码和第一处的一样,但是是不同的区段,所以还需要进去看看是不是上一次哪两个下断的函数,不要直接f9,以为和第一次一样,不一样!)在这里插入图片描述继续F8往下,来到这里:在这里插入图片描述然后F9在这里断下:在这里插入图片描述然后F7进去,然后F9在这个 LR 处断下,在这里插入图片描述然后F7进去:进去后一路F8,继续来到cmp比较指令,在这里插入图片描述继续修改上面函数的返回值R0寄存器的值;从而过掉反调试
在这里插入图片描述直接置零即可;
在这里插入图片描述修改后,继续F9:在mmap函数处断下:在这里插入图片描述同样的,继续往下走,来到libjiagu.so,来时和上面一样,来到这里比价的地方:这是第三次修改R0 和cmp处比较:在这里插入图片描述继续F9,在mmap函数处断下,然后在函数头位置下一个断点;
然后ctrl+S,可以看一下各个区段:在这里插入图片描述
到这里,已经三次反调试的点已经过去了,现在要做的,就是找到栈去存放dex文件的地方;

在mmap函数的函数头和函数尾部分别下断点,尾部断下后,直接F9运行,在头部断下,然后F8单步,一直单步到函数尾部,时刻观察栈窗口;

在栈区发现:在这里插入图片描述此时同步R0寄存器,一直单步,知道十六进制汇编窗口出现dex文件;也就是执行完上面这个函数;在这里插入图片描述观察dex的区域:在这里插入图片描述我们ctrl+s找到该区域跳过来看一下:在zero这个区域里面;在这里插入图片描述
解密后的数据就放在这个区域,也就是R4寄存器存放的值;在这里插入图片描述
这个dex文件的大小就是:19837C在这里插入图片描述
也就是此时R4和R5寄存器的值;在这里插入图片描述接下来,我们用脚本来dump一下;

修改起始地址和大小在这里插入图片描述然后点击run运行即可;在这里插入图片描述
打开压缩包,然后丢进去替换;在这里插入图片描述
把安装包使用androidkiller进行反编译,在xml里面修改这两个属性:在这里插入图片描述
然后保存,回编译即可;

感谢大家的支持!!!
另外再分享脱壳+修复的视频给大家
链接:https://pan.baidu.com/s/1K4cXV5DZ3NbKvTQbCEFANQ
提取码:u3ae

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!