0. 这个笔记写了什么

开篇故事

开篇,我要先讲一个记忆深处的故事:

好多好多年前,在一个风和日丽的晚上;我们一群人走在黑漆漆的校园里,这时候丘比龙学长说: "你们知道吗,至今为止,我只见过三个人肉逆向机,一个是我的学长 monster,一个是清华的xxx, 一个是...."

那时懵懵懂懂的我啥也不懂,不理解"人肉逆向机"的含义。

"那怎么才能成为人肉逆向机呢?"

"我也不知道,但是我知道,无一例外,这几个人在十几岁开始就研究逆向了"

“那时候我还在玩泥巴咧!”

这个故事到现在已经快10年了,至今我也不知道怎么成为"人肉逆向机"。

也许是天赋的问题?就好像“我看懂了,因此我知道我学不会”,这种类型兵种的根本没有重复批量生产的方法论?每个人都独一无二。

这个系列的文章是我对逆向工作的一些简单的总结,以及“我理想中的逆向世界”,

祝各位大佬人人都能成为究极人肉逆向机,看到汇编后源代码就从脑子里往外冒。

与同类文章的区别

“我觉得,琢磨源码与二进制的对应关系是有乐趣的”

国内的几个解放军工程学院的老师也有出版反编译器设计的old-school书籍,我看了,真是熟悉的感觉,回到了学习什么《信号与系统》、《通信原理》的年代。

”与其说是一本教学用的书籍,更像是博士毕业论文”

大量的程序分析算法,配合上学术论文的引用,很难看得下去。对于我这种不算学术界的人,学起来体验十分困难。

我觉得,对于我们平时的工作生活,很难用到这些定理与算法,明白反编译器为什么这么做,明确好输入与输出,确认使用的场景,更加重要。

因此,进阶的反编译教学或许应该长这样:

  • 用提出问题+解决问题的方法叙述

  • 尽量用图形表示

  • 不要复杂的算法,不要学术语言,要有乐趣

  • 小白也能看懂+学到知识(这好像不太可能)

  • 学到的知识最好在实战有意义!

为啥要看这本书

当我还是一个小白的时候,只会用IDA的F5进行逆向。什么Angr,中间语言,OLLVM 看的我是一脑袋浆糊。这还不是最麻烦的,最麻烦的是不知道自己哪里不懂。也不知道怎么接下去学习。

我希望通过这本书提供一个过渡的桥梁,通过理解IDA的F5或者其它反编译器类似的技术的核心,以此来逐渐脱离对F5的依赖,掌握静态逆向的核心技术—> 反“编译器”。

透过反编译技术,理解程序为什么编译成这个样子,这么还原回去;熟悉反编译器的架构,最终当F5不起作用了,能够自己分析然后解决问题,甚至写出自己的F5来。

同时,实践的章节还将一步一步的教会基于ida、ghidra、angr等工具自己开发自己的逆向能力+逆向插件。

其它的?

除了关于反编译技术的理论补充,我也想加入一些深度混淆对抗的讨论章节。

随着反编译混淆技术的发展,原始的OLLVM,VMP等技术的进一步发展,以后的逆向对抗的难度一定是越来越深的。在这里尝试讨论一些针对不同的变种混淆的深度定制还原技术,寻找更好的解决方案。

Last updated