枕梦夜谈 发表于 2021-5-12 15:42

Rainbow逆向工程学习记录第一辑-反编译形态初认识-分支结构

本帖最后由 枕梦夜谈 于 2021-5-15 09:30 编辑

最近开始整理之前做逆向工程时的学习记录。
首先是反编译形态初认识-分支结构。
If结构:
源代码:

反编译形态:

伪代码:

If-else双路结构:

源代码:

反编译形态:

伪代码:

If-else多路结构:
源代码:

反编译形态:

伪代码:

上图可以看到在条件判断语句中,汇编代码通过cmp、test等比较语句进行条件的判断,然后通过jmp、jle、jns等跳转语句进行流程跳转。
图中伪代码部分可以看出,除变量名称外,伪代码和源代码竟然非常接近甚至一模一样。
If-else多路结构中伪代码结构并非和源代码一样,而是嵌套形式的双路结构,这是因为程序在编译后是不可逆的,并不能恢复成初始状态。
switch结构(swich.cpp):
源代码:

反编译形态:

伪代码:

从图中可以看出switch在底层实现上是与ifelse语句相同的。

Hmily 发表于 2021-5-13 11:31

看下这个学习下怎么贴图:https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36

枕梦夜谈 发表于 2021-5-15 09:23

Hmily 发表于 2021-5-13 11:31
看下这个学习下怎么贴图:https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36

好嘞!谢谢H大指点!

Hmily 发表于 2021-5-15 09:28

枕梦夜谈 发表于 2021-5-15 09:23
好嘞!谢谢H大指点!

然后把这个帖子编辑下吧,不要看起来太别扭了。

枕梦夜谈 发表于 2021-5-15 09:31

Hmily 发表于 2021-5-15 09:28
然后把这个帖子编辑下吧,不要看起来太别扭了。

编辑好了!我就是那天发帖的时候提交,完了以后,看到待审核,又改不了格式了,就很难受{:1_937:}

Hmily 发表于 2021-5-15 09:37

枕梦夜谈 发表于 2021-5-15 09:31
编辑好了!我就是那天发帖的时候提交,完了以后,看到待审核,又改不了格式了,就很难受

ok,正常了。

抱歉,从安全考虑,新人发帖都需要审核,多发一些就不需要了。

枕梦夜谈 发表于 2021-5-15 09:40

Hmily 发表于 2021-5-15 09:37
ok,正常了。

抱歉,从安全考虑,新人发帖都需要审核,多发一些就不需要了。

{:1_932:}嗯嗯,审核会好一点,免得出问题影响论坛

kyohot 发表于 2021-5-23 12:17

鼓励转贴优秀软件安全工具和文档!

MizurenNanako 发表于 2021-11-16 18:10

正在学习OD,希望能早日入门。
页: [1]
查看完整版本: Rainbow逆向工程学习记录第一辑-反编译形态初认识-分支结构