怕上火喝王老吉 发表于 2020-2-13 15:16

【安卓逆向】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然后保存,回编译即可;

Hmily 发表于 2020-2-13 15:56

@怕上火喝王老吉 你这贴子是原创吗?

涛之雨 发表于 2020-2-14 08:29

可能是原创,但是个人感觉楼主没有修复oncreate。。。。
因为没看见opcode相关的内容和加固so的dump{:301_984:}
易锦的昨晚的课程我也看了,没有修复oncreate,只是过反调试和dumpdex(不完整)

(小声逼逼俺也不会。。。)

雨夜故园 发表于 2020-2-13 15:28

小木曾雪菜 发表于 2020-2-13 15:31

这个排版好好注意一下

byh3025 发表于 2020-2-13 15:42

那两个属性应该怎么修改呢?

yj1013 发表于 2020-2-13 15:42

提供下app资源,方便学习,谢谢。

a1069517910 发表于 2020-2-13 15:50

感谢楼主分享!

Readmy 发表于 2020-2-13 16:06

这个需要好好学,正需要

wfm324 发表于 2020-2-13 16:37

怎么修改那两个属性?

Wmbzyutian 发表于 2020-2-13 17:04

感谢楼主分享!
页: [1] 2 3
查看完整版本: 【安卓逆向】360壳过反调试+dump dex文件以及简单修复