讨论一下逆向混淆过的程序的思路

现在市面上常见的混淆手段主要是类名方法名混淆和字符串加密(混淆)这两种。其次还有IR层的程序逻辑的混淆。

我的思路是使用反汇编工具来进行静态分析就变的比较难,无法直观的定位到目标函数,只能用lldb来定位到一个范围,然后具体定位到某个函数,获取到目标数据,但是也需要进行对其解密,这时候又需要去逆向相关的加密解密方法。

一般对于逆向这类app,有没有什么好一点的入手点或者思路?

1 个赞

出口处看堆栈。统计N次stack日志里最常出现的方法就是加密解密的方法。
搜索密码学用的常数。

IR层用CSEKSE重写来合并指令

3 个赞

小白求问csekse是什么,可以给个链接吗,去Google了但是没结果…

Capstone Engine. Keystone Engine.
你还需要大量的外部工作来实现一个即使是最基础的反IR混淆工具。我原来的回答请考虑只当作豆知识来看待

2 个赞

我原文漏提的还有一个是Unicorn,这三者配合好针对特定二进制的特定部分可以相对简单的实现一定程度的反混淆。

请注意上文的定语

或者lldb跑脚本也可以做些简单的工作,不过效率不高就是了

1 个赞