目标是一个几 MB 的剥离符号的二进制,要找到"验证许可证"那段。纯静态翻代码效率太低,我一般这么干:
1. 从字符串反推
最笨也最有效。找错误提示字符串,交叉引用回去。很多时候一步到位。
2. 从 API 下手
猜它会调什么——文件读写、注册表、网络、加密。在这些 API 上下断点,看调用栈。
3. 差分执行
输入正确的和错误的各跑一遍,比对执行路径。分歧点附近就是判断逻辑。
4. 内存断点
知道关键数据在哪之后,对那块内存下写入断点,直接定位到谁改的它。
第 3 条我觉得被低估了——很多人只会下断点然后单步,但"两次运行的差异"信息量大得多。
你们有什么更快的路子?