首页
社区
课程
招聘
[原创]Android逆向so文件,调试加解读
2014-10-16 19:10 64648

[原创]Android逆向so文件,调试加解读

2014-10-16 19:10
64648
本科刚毕业,实在无聊想学学破解,还是个弱菜,接触ida还不到2个月,破解程序都不到5个,但是还是很努力的在玩破解,无聊时看到这个apk,开始这个文件的破解。
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(非常大)
 
里面很像加密解密,所有文件也在数据段里面有~~~只能硬着头皮看了~~~里面疑似加密解密的文件太多~~看需要花好长时间~~~看了半天一个函数(具体不好意思说),发现不是相关代码~~~决定开始动态调试~~~
一开始准备用下面这个方法调试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文件的问题》  这个帖子的方法
 
手机端打开程序(若打不开请装谷歌配件)
然后进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个字节是解压缩后的大小~~~关于怎么解压缩我就不说了~~反正也是这种方法~~~~还请各位破解的愉快~~~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (16)
雪    币: 5274
活跃值: (1832)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wanttobeno 2014-10-19 09:56
2
0
感谢分享!
雪    币: 4319
活跃值: (1956)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
cqzhou 2014-10-19 11:38
3
0
你确定有我菜
雪    币: 466
活跃值: (119)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
kusky 4 2014-10-19 19:34
4
0
收藏学习之
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wapjia 2014-10-19 23:04
5
0
求可以F5的ida,网上找了好像都不能用。
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
luyangliu 2014-10-20 10:43
6
0
http://bbs.pediy.com/showthread.php?t=191395&highlight=ida6  好像是这个
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
QEver 5 2014-10-20 19:57
7
0
不错,其实很多事情,只要肯投入去做,总会找到解决方法的,即使之前从来没遇到过。
其实呢~整篇文章,没看懂。
楼主写文章,完全沉浸在自己解决的过程中了。对于大多数人而言,并不关心你怎么破解的,关心的是你通过什么手段,收集到了什么信息,然后如果根据这些信息做判断,从而进行下一步操作。
所以如果文章增加一些对环境的介绍,以及自己的思考过程的话,会更好。

说点实际的,如果在jar里面没有发现关键内容的话,就要注意jar里面的native函数以及Loadlibrary操作,从而可以判断出加载了哪些so,调用了什么函数,就不会出现判断不出是不是加载了lib-main.so的情况了。
IDA调试的时候,只要勾选 加载so时pause ,通过so路径,就能很容易判断出来是不是apk自带的so文件了,attach是一种方法,但是很多情况下关键点是在加载过程中的,很容易漏掉。

之后的内容就太模糊了,建议花点篇幅介绍一下 vld 指令,反正我是第一次见,看完还是没明白这是什么意思。

基本就这样,已经做得很不错了,楼主继续加油吧。
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
luyangliu 2014-10-21 18:24
8
0
嗯(总算等到大神)~~~第一次写文章~~~事后发现真的没写书天赋~~~~还没怎么学破解~~~那个ida调试还是自己刚学会的~~~至于 vld 指令~~可以查arm的文档的~~应该在这里http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/Chdhcfbc.html
非常感谢大神指导~~~~~
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jeffycf 2014-10-22 11:19
9
0
不错,谢谢,分享,学习一下
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zerglurker 2014-10-23 11:13
10
0
不错,还是很有参考价值的
雪    币: 435
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqsunqiang 2014-10-29 17:06
11
0
那个查so函数列表工具是什么?
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
luyangliu 2014-10-29 21:43
12
0
ida 啊
雪    币: 1369
活跃值: (2123)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdnice 2014-10-30 21:52
13
0
谢谢分享。。。
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
轩轩hlq 2014-11-1 22:03
14
0
楼主就是日后的大牛啊
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xjhma 2015-7-29 11:14
15
0
太好了,学习了
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wuwanga 2016-8-26 15:46
16
0
学习了,谢谢分享
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
密法师 2017-1-17 10:20
17
0
楼主做这个都需要学什么知识?需要学汇编吗?
游客
登录 | 注册 方可回帖
返回