整理了一些ollvm对抗的文章,大家可以参考。ollvm还原主要有静态分析的方法和动态分析的方法。无论哪种方法基本流程都是:找到所有基本块(特征匹配)-确定真实块之间的关联(静态的:符号执行/反编译器提供的IL的API;动态的:模拟执行/IDA trace)-patch原程序
利用符号执行去除控制流平坦化: https://security.tencent.com/index.php/blog/msg/112利用angr符号执行去除虚假控制流: https://bbs.pediy.com/thread-266005.htmTetCTF2022一道代码混淆题分析——crackme_pls: https://bbs.pediy.com/thread-271164.htmAngr Control Flow Deobfuscation: https://research.openanalysis.net/angr/symbolic%20execution/deobfuscation/research/2022/03/26/angr_notes.html
Deobfuscation: recovering an OLLVM-protected program:https://blog.quarkslab.com/deobfuscation-recovering-an-ollvm-protected-program.html我印象中quarkslab这篇文章是最早的关于去ollvm混淆的文章,有点老了,不过还是值得学习。MODeflattener - Miasm's OLLVM Deflattener: https://mrt4ntr4.github.io/MODeflattener/
https://github.com/RolfRolles/HexRaysDeobhttps://github.com/idapython/pyhexraysdeob相关文章:https://hex-rays.com/blog/hex-rays-microcode-api-vs-obfuscating-compiler/https://www.virusbulletin.com/uploads/pdf/conference_slides/2019/VB2019-Haruyama.pdf基于Microcode的IDA反编译代码优化插件(目前暂未开源): https://github.com/obpo-project/obpo-plugin
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)