Android逆向so文件,调试加解读

apk下载地址http://pan.baidu.com/s/1eQ29ypk
这是个android程序,程序本事很大,主要是里面的 .psb.m 文件(请教大神这是啥引擎),这个文件是被压缩后解密的,非常恶心,大概源文件用psb开头 压缩后用(psb开头 加密后用mfl。
程序拿到手,弱菜(就是我)第一反应是dex2jar-0.0.9.15 后 jd-gui.exe 然后配合apktool修改,可是看到jar里面没啥值钱的东西~~~.psb.m这字段都木有,也不在string里面,怀疑是so文件内实现的~~~~(非常不敢怀疑so文件比smali难多了),打开lib-main.so(非常大)
  Android逆向so文件,调试加解读_第1张图片
里面很像加密解密,所有文件也在数据段里面有~~~只能硬着头皮看了~~~里面疑似加密解密的文件太多~~看需要花好长时间~~~看了半天一个函数(具体不好意思说),发现不是相关代码~~~决定开始动态调试~~~
一开始准备用下面这个方法调试http://bbs.pediy.com/showthread.php?t=178659&highlight=android+%E5%90%AF%E5%8A%A8+%E5%8A%A8%E5%89%8D。发现进不去,根本就没有lib-main.so,是不是没有加载,这个还请大神解答
我赌他不是一开始就把所有文件处理完,所以用《已解答: 关于用ida远程调试android native c 的so文件的问题》  这个帖子的方法
  Android逆向so文件,调试加解读_第2张图片
手机端打开程序(若打不开请装谷歌配件)
然后进23946端口 ~~其中有个解析太慢直接canel
  Android逆向so文件,调试加解读_第3张图片
Shift+f2
  点击图片以查看大图图片名称:	4.png查看次数:	20文件大小:	6.5 KB文件 ID :	92897
找Code段~~~(也只有code段这么大)
然后在所有你怀疑的地方加偏移7547b000(有些人不是这偏移)下断点放f2,f9后按按手机屏幕,然后f9配合f7,f2调试
在13a258这个函数发现目标
  点击图片以查看大图图片名称:	5.png查看次数:	38文件大小:	3.5 KB文件 ID :	92898
Android逆向so文件,调试加解读_第4张图片
 mfl字段
怎么找到13a258~~这只能说看着函数样子和名字找的~~其实我一开始是查找,psb.m字段~~然后发现那函数不对~~花了很大代价~~~这个得请教大神
在这个函数的末尾13a298也设下断点,按一下f9 mlf对应的hex view立即变成(psb,确定是解密函数。
  Android逆向so文件,调试加解读_第5张图片
  Android逆向so文件,调试加解读_第6张图片
这个函数也太大了~~~~无奈二分查看~~~神马时候hex view改变
名称:  9.png查看次数: 0文件大小:  1.8 KB
 发现是这些vld造成的
锁定vld
名称:  10.png查看次数: 0文件大小:  3.0 KB
 
不停的调试和看代码
还像就是从第8位源文件和一个解密段互相异或,中间多数是数组下标判断越界的改变~~~
Dump出解密段shift+f2
  Android逆向so文件,调试加解读_第7张图片
Android逆向so文件,调试加解读_第8张图片
 
搜索d9Gd 发现源文件是font_ahoge_main.psb.m(也可以dump)
尝试写了异或程序发现成功(这句话说起来简单,尝试+调试了好几次呢)
  Android逆向so文件,调试加解读_第9张图片

现在关键是解码段是怎么来的
发现虽然前面的代码很长,但是很快跳到了(这个我没花很长时间~现在想起来真是侥幸)
  Android逆向so文件,调试加解读_第10张图片
这一行,在这一行前面下断点
发现r1是对应这一段
  名称:  15.png查看次数: 0文件大小:  2.1 KB
跳到755b54ec这段上时,这是r0指向的栈
  名称:  16.png查看次数: 0文件大小:  2.0 KB
我以前手动编过md5的加密~~很熟悉这就是标准的md5加密~~不熟悉的也可以自己看
  名称:  17.png查看次数: 0文件大小:  2.2 KB
到了755b5508就成了Rj9Pegoh4font_ahoge_main.psb.m(不断尝试可以知道都是Rj9Pegoh4+小写文件名)的md5值~~yeah
然后就到了
  名称:  18.png查看次数: 1文件大小:  3.0 KB
这个函数~~~f9后发现很重要(大多数函数我都是跳过后才发现很重要再回头看)
  名称:  19.png查看次数: 0文件大小:  3.9 KB
这中间函数也很重要
F5发现是
  Android逆向so文件,调试加解读_第11张图片
调试时发现传入的参量为0x12bd6aa和存储位置
  Android逆向so文件,调试加解读_第12张图片
Dump下写了个相同的模拟出来
  Android逆向so文件,调试加解读_第13张图片
后面也都是体力活f5后再调试~~模拟出_ZN7MRandomC1EPKjj
  Android逆向so文件,调试加解读_第14张图片
再模拟同样模拟出这个
 
  名称:  24.png查看次数: 0文件大小:  3.3 KB
Android逆向so文件,调试加解读_第15张图片
最后解密段终于好了~~~~yeah
最后解密就好了~~~在加密回去时mfl头文件还有4个字节是解压缩后的大小~~~关于怎么解压缩我就不说了~~反正也是这种方法~~~~还请各位破解的愉快~~~*转载请注明来自看雪论坛@PEdiy.com 

你可能感兴趣的:(Android逆向so文件,调试加解读)