首页
社区
课程
招聘
[原创]逆向基础二
发表于: 2017-4-14 21:38 9234

[原创]逆向基础二

2017-4-14 21:38
9234

把自己最近的读书笔记与学习心得分享总结,希望各位看官能有所收获吧。

参考书籍:

C++反汇编与逆向技术

黑客免杀攻防

天书夜谈

 

需要用到的工具:

IDA

OD

编译环境:VS2013 Debug

 

首先附上跳转表:


主要内容(不分先后顺序)

1.if-else反汇编

2.for反汇编

3.do-while反汇编与while反汇编(阉割版for循环)

4.总结fordo-whilewhile最容易记的特征

5.switch-case的三种不同表现方式

 

1.先来个最简单if语言看下再汇编层是如何体现出来的

渣渣代码:

我们来做个测试

总结:

汇编翻译的跳转指令是跳出代码的条件,与你写的条件完全相反。希望各位以后看到汇编翻译的是 jne ,那么你写的条件就是等于

     

1.2继续if-else if-else代码的反汇编,这里我把VS的一些检查堆栈代码给删掉了

上渣渣代码:


2.最强的for循环反汇编


我带画张图帮助大家理解,图画的很渣:


3.do-while循环与while循环(阉割版for循环)

do-while语句的特征,不管怎么样先执行一遍再说


4.总结特征

For2jmp

While循环有1jmp

Do-while没有jmp


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (15)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
那个啥。。。从0开始连续的case一般都是直接用表实现的,比如DllMain里面四个case
2017-4-14 22:49
0
雪    币: 764
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
  多谢分享
2017-4-15 05:46
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

你應該試試++i  肯定可以發現什麼

另外 你把For語句的塊 加入一個簡單的程序體代碼 會更好一些

2017-4-16 18:26
0
雪    币: 1433
活跃值: (4438)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
5
slowloriss 你應該試試++i 肯定可以發現什麼
我去试试
2017-4-16 19:23
0
雪    币: 1433
活跃值: (4438)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
6
hzqst 那个啥。。。从0开始连续的case一般都是直接用表实现的,比如DllMain里面四个case
回头有空我去看看
2017-4-16 19:23
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
讓我想到一本龍書  編譯器原理
2017-4-17 00:36
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
前来支持叶老表
2017-4-18 13:19
0
雪    币: 704
活跃值: (228)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
9

开了优化之后,for和while都应该优化成do-while

这样好处有两个:

1. 循环内的跳转只有一个

2. 那一个跳转是向上跳的,cpu设计的时候可以做优化,在pipleline里面一律将向上的条件跳预测为跳,降低损失。

2017-4-18 22:07
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
图片表示流程,文字加以说明,很清晰很直观
2017-4-19 08:21
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11

做这类内容    用VC6  不是更好吗          越后面的编译器  编译的代码越乱。
    感觉内容和滴水那个      很类似。
2017-4-19 11:02
0
雪    币: 1433
活跃值: (4438)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
12
xacker 做这类内容 用VC6 不是更好吗 越后面的编译器 编译的代码越乱。 感觉内容和滴水那个 很类似。
我没装VC6,现在装这个人太少了。到时换成VC6.0代码少
2017-4-19 11:18
0
雪    币: 1433
活跃值: (4438)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
13
飞龙使者 开了优化之后,for和while都应该优化成do-while 这样好处有两个:1. 循环内的跳转只有一个2. 那一个跳转是向上跳的,cpu设计的时候可以做优化, ...
我以前学的时候也记得是优化成do-while,不过开了优化真是面目全非
2017-4-20 17:59
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不错收藏了
2017-5-8 14:30
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
i++是後置運算子  所以i自然是在塊的最後邊自增
2017-5-9 04:12
0
雪    币: 1433
活跃值: (4438)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
16
slowloriss i++是後置運算子 所以i自然是在塊的最後邊自增
好的谢谢
2017-5-9 18:12
0
游客
登录 | 注册 方可回帖
返回
//