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(非常大)
里面很像加密解密,所有文件也在数据段里面有~~~只能硬着头皮看了~~~里面疑似加密解密的文件太多~~看需要花好长时间~~~看了半天一个函数(具体不好意思说),发现不是相关代码~~~决定开始动态调试~~~
手机端打开程序(若打不开请装谷歌配件)
然后进23946端口 ~~其中有个解析太慢直接canel
Shift+f2
找Code段~~~(也只有code段这么大)
然后在所有你怀疑的地方加偏移7547b000(有些人不是这偏移)下断点放f2,f9后按按手机屏幕,然后f9配合f7,f2调试
在13a258这个函数发现目标
mfl字段
怎么找到13a258~~这只能说看着函数样子和名字找的~~其实我一开始是查找,psb.m字段~~然后发现那函数不对~~花了很大代价~~~这个得请教大神
在这个函数的末尾13a298也设下断点,按一下f9 mlf对应的hex view立即变成(psb,确定是解密函数。
这个函数也太大了~~~~无奈二分查看~~~神马时候hex view改变
发现是这些vld造成的
锁定vld
不停的调试和看代码
还像就是从第8位源文件和一个解密段互相异或,中间多数是数组下标判断越界的改变~~~
Dump出解密段shift+f2
搜索d9Gd 发现源文件是font_ahoge_main.psb.m(也可以dump)
尝试写了异或程序发现成功(这句话说起来简单,尝试+调试了好几次呢)
现在关键是解码段是怎么来的
发现虽然前面的代码很长,但是很快跳到了(这个我没花很长时间~现在想起来真是侥幸)
这一行,在这一行前面下断点
发现r1是对应这一段
跳到755b54ec这段上时,这是r0指向的栈
我以前手动编过md5的加密~~很熟悉这就是标准的md5加密~~不熟悉的也可以自己看
到了755b5508就成了Rj9Pegoh4font_ahoge_main.psb.m(不断尝试可以知道都是Rj9Pegoh4+小写文件名)的md5值~~yeah
然后就到了
这个函数~~~f9后发现很重要(大多数函数我都是跳过后才发现很重要再回头看)
这中间函数也很重要
F5发现是
调试时发现传入的参量为0x12bd6aa和存储位置
Dump下写了个相同的模拟出来
后面也都是体力活f5后再调试~~模拟出_ZN7MRandomC1EPKjj
再模拟同样模拟出这个
最后解密段终于好了~~~~yeah
最后解密就好了~~~在加密回去时mfl头文件还有4个字节是解压缩后的大小~~~关于怎么解压缩我就不说了~~反正也是这种方法~~~~还请各位破解的愉快~~~
小试锋芒 发表于 2014-10-28 16:46
非常不错的文章,如果能再写的细致和详细点,照顾到新手朋友的话就更好了,期待更多更好的作品。
大大,说好的加分呢 @七寸往事
文章是你的原创吗?看雪里的http://bbs.pediy.com/showthread.php?p=1324254#post1324254是不是你写的?如果是转载,将撤销精华处理。 炒鸡深奥~~~楼主大神 我太菜了,看不懂{:301_1008:} 非常不错的文章,如果能再写的细致和详细点,照顾到新手朋友的话就更好了,期待更多更好的作品。 七寸往事 发表于 2014-10-28 18:32
大大,说好的加分呢
要不我撤销你的精华,给你加cb?{:17_1068:}
顶一个,,,,支持
页:
[1]
2