zpeng
posts - 15, comments - 8, trackbacks - 0, articles - 2
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2009年10月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
(15)
2012年8月 (1)
2010年8月 (2)
2010年4月 (1)
2010年1月 (3)
2009年12月 (6)
2009年10月 (2)
文章档案
(2)
2009年11月 (1)
2009年10月 (1)
搜索
积分与排名
积分 - 7546
排名 - 1313
最新评论
1. re: [转载]typedef的4个用法
经常听说,今天才理解了
--岁月漫步
2. re: 近期面试见闻
评论内容较长,点击标题查看
--小天狼星
3. re: 近期面试见闻
评论内容较长,点击标题查看
--小天狼星
4. re: 近期面试
评论内容较长,点击标题查看
--小天狼星
5. re: [转载]typedef的4个用法
good
--zsw
阅读排行榜
1. vc中给控件关联成员变量 (1608)
2. [转载]汇编语言算术右移和逻辑右移的区别是什么?(1317)
3. 近期面试见闻(492)
4. ror的逆向C代码(475)
5. 关于sizeof(446)
评论排行榜
1. 近期面试见闻(3)
2. [转载]typedef的4个用法(2)
3. switch ,,,case逻辑的逆向(2)
4. ror的逆向C代码(1)
5. 关于sizeof(0)
一个逆向条件语句相关的例子
Posted on 2009-10-30 14:25
小天狼星
阅读(232)
评论(0)
编辑
收藏
引用
在逆向过程中感觉条件判断是比较烦人的,一步判错就结果相反,改变原来的程序流程。这里帖一段汇编代码举个例子。
.text:0041FC96 19C cmp dx, di
.text:0041FC99 19C jz short loc_41FCA6
.text:0041FC9B 19C cmp dx, 3Fh
.text:0041FC9F 19C jnz short loc_41FCB1
.text:0041FCA1 19C test di, di
.text:0041FCA4 19C jz short loc_41FCB1
.text:0041FCA6
.text:0041FCA6 loc_41FCA6: ; CODE XREF: sub_41FC64+35j
.text:0041FCA6 19C inc esi
.text:0041FCA7 19C inc esi
.text:0041FCA8 19C inc eax
.text:0041FCA9 19C inc eax
.text:0041FCAA 19C jmp short loc_41FC85
.text:0041FCAC ; ---------------------------------------------------------------------------
.text:0041FCAC
.text:0041FCAC loc_41FCAC: ; CODE XREF: sub_41FC64+30j
.text:0041FCAC 19C test di, di
.text:0041FCAF 19C jz short loc_41FCEA
.text:0041FCB1
.text:0041FCB1 loc_41FCB1:
可以看到,在41FC99处的那个判断语句是if (dx == di) then loc_41FCA6而41FC99后面的代码则又跟着两个条件跳转,并且随后的两个条件语句的后续正好是41FC99的跳转实现处,这就说明,这三个条件语句应是一体的,进一步看,0041FC9F 0041FCA4处的代码都是跳转到同一位置,可见这两处条件判断应是相与的关系,并且第一个条件语句41FC99处的和后面两个的结果应是相或关系。可以将这段判断语句写成如果C代码:
if (dx ==di || dx == 0x3F && di != NULL) .
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 小天狼星