使用unidbg破解孤挺花字符串混淆并修复so
2021-07-29 18:59:00 Author: mp.weixin.qq.com(查看原文) 阅读量:86 收藏

本文为看雪论坛优秀文章

看雪论坛作者ID:Avacci
(题外话:首先恭喜一下高研班学员“一颗金柚子”拿到阿里offer!越努力越幸运 —— 【看雪高研班】一颗金柚子访谈录
目标:字符串混淆技术是有效对抗静态分析的手段。对于在init_array节函数中进行混淆字符串的解密的保护技术,请分析课上使用AndroidNativeEmu解决的原理,并使用Unidbg进行实现
 
老师上课时详细地演示了用AndroidNativeEmu做相关处理的整个流程。先用AndroidNativeEmu模拟执行一遍.init_array节中所有的函数。在执行过程中记录所有对内存的写操作(地址,内容),对同一地址的写操作只要记录最后一次。最后根据的写操作记录patch so中对应偏移处的内容。
具体实现方式是对内存写操作添加hook回调:

在回调处理函数中把写入内存的地址和写入的内容存到一个map对象中: 模块加载完,.init_array中的函数肯定也早就执行完了,就可以根据前面记录的内存修改操作去patch原so。这里只处理地址位于so加载地址段内的写内存操作,而且patch的时候要把记录的内存地址转换为相对so加载基址的偏移。

 
Unidbg实现起来也依照之前的理念,先给模拟器加上内存写操作的hook回调:
然后由框架加载so库时调用init_array节中的函数列表:
So加载完后,根据写操作记录patch内存中对应地址的内容,再保存为新的so。
以上流程测试可行。
 
Obf.so处理完的部分成果:
 
Libcrypt.so处理完的部分成果:
Libcrack.so处理完的部分成果:

 

看雪ID:Avacci

https://bbs.pediy.com/user-home-879855.htm

  *本文由看雪论坛 Avacci 原创,转载请注明来自看雪社区

# 往期推荐

1. MTCTF-PSA-Writeup

2. 【分析记录】疑似Confucius组织组件CuoliVXaRAT分析

3. WOW怀旧服 明文发包获取和HOOK

4. X86内核笔记_2_驱动开发

5. 新的漏洞分析体验:CVE-2010-3333 RTF栈缓冲区溢出漏洞

6. 某知笔记服务端docker镜像授权分析

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458389297&idx=1&sn=7c12e2cc58b2ec8e76850f987d8e32eb&chksm=b18f3bbb86f8b2ad339ecdf246d8952d0d27297e3f7eafabf51029885b034db6389ffc190c96#rd
如有侵权请联系:admin#unsafe.sh