首页
社区
课程
招聘
[求助]关于花指令的疑问?
发表于: 2008-12-24 10:50 3304

[求助]关于花指令的疑问?

2008-12-24 10:50
3304
书上说:"下面第一种情况,反汇编工具可以识别, 我想,BYTE E8反汇编工具当然能识别,它又不是一个指令,但书上说第二种情况识别不了,我就疑问,第二种情况下,为什么不能识别啊,

情况一
00401000 xor eax, 00000001
00401003 add eax, 00000002
00401006 jmp 00401009
00401008 BYTE E8;
00401009 xor eax, 00000003
0040100C add eax, 00000004
0040100F xor eax, 00000005

--------------------------------------------------
情况二
00401000 xor eax, 00000001
00401003 add eax, 00000002
00401006 jz 00401009
00401008 jz 00401009

0040100A BYTE E8;
0040100B xor eax, 00000003
0040100E add eax, 00000004
00401011 xor eax, 00000005

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
我想你的书一定已经很老了....
实际上现在调试器如IDA和OD已经能识别很多的花指令了...实际上花指令在程序中不起什么作用,只是干扰视线,让逆向的同志,花掉更多的时间...
至于像RET JMP JZ ....等等来实现的花指令已经在多数的情况下被反汇编工具识别了...尤其的IDA这个方面是做的很强大的。你看看那个IDA在反汇编的时候上面那个彩色的状态栏。和指针来回的跳,就知道他不是简单的机器码分析了.....呵呵.

花指令 就是干扰反汇编的代码...

你的那个书中所指的不能识别,是由于他的跳转是动态实现的所以说不能识别实际上,你的情况还是可以识别的...如果你用

jmp @@:
@:
pop eax
add eax,1
jmp eax
@@:
call @
BYTE E8
.......          ;真实指令

效果会好一些,应为只是静态,反汇编工具不可能知道跳的时候 寄存器里面放的是什么...
2008-12-24 12:53
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我就搞不清楚,BYTE E8本来就不是指令,再怎么搞,
反汇编工具都应该能识别啊?

让我写个工具,也能识别啊,
因为显然BYTE不是指令啊
2008-12-24 13:23
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
EB 为什么不能是计算机指令呢....byte 只是显示 这是个数据...如果你是反汇编出来的话,这样显示的意思的 这里是一个 byte数据 数据值是 0E8h
计算机指令里面E8 大约是 CALL 的意思
如 EB 00 00 00 00 ------> CALL 05

如果反汇编误认为它是指令,就会把他翻译成指令啦....
2008-12-24 13:41
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哦,哦哦哦,哦哦哦,哦哦
2008-12-24 14:32
0
雪    币: 175
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
汗,学习了。
2008-12-24 18:48
0
游客
登录 | 注册 方可回帖
返回
//