> For the complete documentation index, see [llms.txt](https://tommy-3.gitbook.io/my_reverse_book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tommy-3.gitbook.io/my_reverse_book/my_reverse_notes/0.-zhe-ge-bi-ji-xie-le-shen-me.md).

# 0. 这个笔记写了什么

## 开篇故事

开篇，我要先讲一个记忆深处的故事：

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

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

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

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

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

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

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

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

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

## 与同类作品有啥区别？

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

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

这些教材“与其说是一本教学用的书籍，更像是博士毕业论文”

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

对于我们平时的工作生活，这不会直接使用这些定理与算法，明白反编译器为什么这么做，明确好输入与输出，确认使用的场景，更加重要。

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

* 最重要的，一定要有IDA的真实案例
* 用提出问题 + 解决问题的方法叙述
* 不要复杂的算法，不要学术语言，要有乐趣
* 小白也能看懂+学到知识（嗯～会尽最大的能力做到的）
* 学到的知识在实战中有意义！

## 为啥要学习这些知识？

当我还是一个小白的时候，只会用IDA的F5进行逆向；一旦F5趴窝了那我也歇菜了。

什么Angr，中间语言，OLLVM ，VMP等等，看的我是一脑袋浆糊。这还不是最麻烦的，最麻烦的是不知道自己哪里不懂。也不知道怎么接下去学习。

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

通过对反编译理论的学习，理解程序为什么编译成这个样子，怎么还原回去；

熟悉反编译器的架构，最终当F5出问题了，能够分析情况并解决问题，甚至写出自己的F5来。

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

## 其它的？

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

随着反编译混淆技术的发展，变种OLLVM，高强度VMP等技术的进一步发展，逆向对抗的难度逐渐越来越深。

因此需要从最基本的混淆，到复杂的OLLVM/VMP等；去设计一些针对不同的变种强混淆的深度定制还原技术，寻找更好的解决方案。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://tommy-3.gitbook.io/my_reverse_book/my_reverse_notes/0.-zhe-ge-bi-ji-xie-le-shen-me.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
