【安卓逆向】360壳过反调试+dump dex文件以及简单修复
mmap函数下段,然后F9运行断下,然后F8往下,一直运行到这里:https://ke.yijincc.com/files/default/2020/02-13/1326008b011a213417.pngF7进来,在R2寄存器这里打一个断点:https://ke.yijincc.com/files/default/2020/02-13/1327186a594f530849.pngF9运行到这里,然后F7进来;https://ke.yijincc.com/files/default/2020/02-13/13283202b2b4098994.pngF8往下走,这里有比较指令:https://ke.yijincc.com/files/default/2020/02-13/13303170903a642726.png这个函数的返回值在R0里面存储,(可以直接把光标放在cmp那条指令然后F4跳过去 )https://ke.yijincc.com/files/default/2020/02-13/133524c5bb0e711304.png把R0置零:https://ke.yijincc.com/files/default/2020/02-13/133610a0751f476116.png置零之后呢,F9:https://ke.yijincc.com/files/default/2020/02-13/1337426e8555667723.png再一次F8:继续在mmap函数末尾断下,然后继续F8:来到这里:https://ke.yijincc.com/files/default/2020/02-13/1339495cb447787416.png紧接着F9,继续来到mmaphttps://ke.yijincc.com/files/default/2020/02-13/134031fc92f2127905.png然后继续F8:发现还是libc.so,继续F9,然后F8,知道来到libjiagu.so:(注意,这是第二处反调试的点,虽然后逻辑代码和第一处的一样,但是是不同的区段,所以还需要进去看看是不是上一次哪两个下断的函数,不要直接f9,以为和第一次一样,不一样!)https://ke.yijincc.com/files/default/2020/02-13/134501d25e6b205677.png继续F8往下,来到这里:https://ke.yijincc.com/files/default/2020/02-13/1346339e202f868043.png然后F9在这里断下:https://ke.yijincc.com/files/default/2020/02-13/134829d91d81738967.png然后F7进去,然后F9在这个 LR 处断下,https://ke.yijincc.com/files/default/2020/02-13/135123bb70be130986.png然后F7进去:进去后一路F8,继续来到cmp比较指令,https://ke.yijincc.com/files/default/2020/02-13/135317d9ecf7204473.png继续修改上面函数的返回值R0寄存器的值;从而过掉反调试https://ke.yijincc.com/files/default/2020/02-13/1353542d4750958887.png直接置零即可;https://ke.yijincc.com/files/default/2020/02-13/135459334a1c856580.png修改后,继续F9:在mmap函数处断下:https://ke.yijincc.com/files/default/2020/02-13/135548457c4c736785.png同样的,继续往下走,来到libjiagu.so,来时和上面一样,来到这里比价的地方:这是第三次修改R0 和cmp处比较:https://ke.yijincc.com/files/default/2020/02-13/135700c8946d504525.png继续F9,在mmap函数处断下,然后在函数头位置下一个断点;然后ctrl+S,可以看一下各个区段:https://ke.yijincc.com/files/default/2020/02-13/13574591070b863882.png到这里,已经三次反调试的点已经过去了,现在要做的,就是找到栈去存放dex文件的地方;在mmap函数的函数头和函数尾部分别下断点,尾部断下后,直接F9运行,在头部断下,然后F8单步,一直单步到函数尾部,时刻观察栈窗口;在栈区发现:https://ke.yijincc.com/files/default/2020/02-13/135827332165308591.png此时同步R0寄存器,一直单步,知道十六进制汇编窗口出现dex文件;也就是执行完上面这个函数;https://ke.yijincc.com/files/default/2020/02-13/1359131ad4b3406002.png
观察dex的区域:https://ke.yijincc.com/files/default/2020/02-13/1400320d32ae041963.png我们ctrl+s找到该区域跳过来看一下:在zero这个区域里面;https://ke.yijincc.com/files/default/2020/02-13/1402179e23d9339454.png解密后的数据就放在这个区域,也就是R4寄存器存放的值;https://ke.yijincc.com/files/default/2020/02-13/14035179594a989603.png这个dex文件的大小就是:19837Chttps://ke.yijincc.com/files/default/2020/02-13/140459b30298442390.png也就是此时R4和R5寄存器的值;https://ke.yijincc.com/files/default/2020/02-13/140548cb592b089626.png接下来,我们用脚本来dump一下;修改起始地址和大小https://ke.yijincc.com/files/default/2020/02-13/140647788566597008.png然后点击run运行即可;https://ke.yijincc.com/files/default/2020/02-13/140801193097918781.png打开压缩包,然后丢进去替换;https://ke.yijincc.com/files/default/2020/02-13/1408419b4f2e733123.png把安装包使用androidkiller进行反编译,在xml里面修改这两个属性:https://ke.yijincc.com/files/default/2020/02-13/140935f0a45e645751.png然后保存,回编译即可; @怕上火喝王老吉 你这贴子是原创吗? 可能是原创,但是个人感觉楼主没有修复oncreate。。。。
因为没看见opcode相关的内容和加固so的dump{:301_984:}
易锦的昨晚的课程我也看了,没有修复oncreate,只是过反调试和dumpdex(不完整)
(小声逼逼俺也不会。。。) 这个排版好好注意一下 那两个属性应该怎么修改呢? 提供下app资源,方便学习,谢谢。 感谢楼主分享! 这个需要好好学,正需要 怎么修改那两个属性? 感谢楼主分享!