首页
社区
课程
招聘
[原创][建议]内存中dump出解密后的so文件--简单修复--使得ida可以静态分析
发表于: 2020-4-22 14:00 15040

[原创][建议]内存中dump出解密后的so文件--简单修复--使得ida可以静态分析

2020-4-22 14:00
15040
本菜对dump出so文件的简单修复的工具应用的记录
问题:
dump出来so文件,ida打开报错:SHT table size or offset is invalid. Continue?
上图

对于文章: https://bbs.pediy.com/thread-257926.htm 。有段话:
“所以直接动态调试,当第一个函数sub_88060执行完后,dump解密后的so。将其用ida打开,可以看到函数都已经被解密了。”

原始vmp加密后的so libbaiduprotect.so
dump出未解密的so dump4.so
dump出解密的so  dump5.so
会在附件中给出

如何确定so文件就是解密之后的

so是十六进制文件elf,修改,查看,模板文件,工具是很重要的,010editor是大利器,配合elf.bt, elf格式文件迎刃而解;
查看原始lib中解开的so文件 libbaiduprotect.so,elf主体文件,以及jni_load方法密文部分 上图(1、2)

jni_load方法密文部分:  


解密之前的dump4.so文件,010editor打开该文件:elf主体文件,缺少section header;上图 dump4soelf.png

compare dump4.so和查看libbaiduprotect.so,上图 


执行完函数sub_88060,在dump下so文件,dump5.so;和dump4.so的区别;上图(三条合计大小684k,一条684k)

beyond compare  对比 dump5.so和dump4.so ,确定是解密之后的区别;上图 

至此,dump5.so 确定是解密之后的so文件;

如何修复呢?
  1. 010editor 查看dump5.so,没有section header内容,有地址
  2. 010editor 查看libbaiduprotect.so,内容较全
  3. beyond compare 这两个文件,两大块内容不相同,上面是解密的内容,第二块儿不同是section header的不同;上图

  4. 复制第二块,即地址是 ab000到末尾的十六进制数据 粘贴dump5.so,新成修复后的dump5解密.so 
  5. ida打开dump5解密.so 对比 ida打开 libbaiduprotect.so 上图,修复成功(ida打开正常)并解密成功(jni_load方法)



工具:
010editor 官网下载 elf.bt
beyond compare
ida7.0 反汇编利器

参考文档:
https://bbs.pediy.com/thread-257926.htm      解释其中的一句话
https://bbs.pediy.com/thread-192874.htm      ELF section修复的一些思考  理解elf文件的精华的帖子
https://www.jianshu.com/p/e2a529e72d84    Android ELF64

谢谢

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

上传的附件:
收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 1448
活跃值: (579)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2020-4-22 15:59
0
雪    币: 456
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2020-4-22 18:35
0
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2020-4-23 11:51
0
雪    币: 26245
活跃值: (63297)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
感谢分享,此帖多茶余饭后移到Android版块中来了。
2020-4-29 13:48
0
游客
登录 | 注册 方可回帖
返回
//