-
-
[原创][建议]内存中dump出解密后的so文件--简单修复--使得ida可以静态分析
-
发表于:
2020-4-22 14:00
15040
-
[原创][建议]内存中dump出解密后的so文件--简单修复--使得ida可以静态分析
本菜对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文件;
如何修复呢?
- 010editor 查看dump5.so,没有section header内容,有地址
- 010editor 查看libbaiduprotect.so,内容较全
- beyond compare 这两个文件,两大块内容不相同,上面是解密的内容,第二块儿不同是section header的不同;上图
- 复制第二块,即地址是 ab000到末尾的十六进制数据 粘贴dump5.so,新成修复后的dump5解密.so
- 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直播授课