能力值:
(RANK:570 )
|
-
-
2 楼
INTEL开发者手册,,,有详细的介绍OPCODE的格式,,,
反汇编器会被迷惑是因为数据指令的二义性,即无法在给定数据中确定一条完整的指令。能够确定的就只有代码执行的入口,以及下一条要执行的指令。同样地,假如你按F7,一直单步,那么当前EIP指向的每一条指令都是正确的
最简单的反汇编器是由上到下一条一条指令反汇编的,而真实的代码流程并不是这样的。
反汇编器的静态方式决定了会受花指令影响显示出错误的结果。所以大多数人用调试器(如OD)脱壳,而不是用反汇编器(如IDA)
会有这样的疑问是因为你没有理解事物的本质。所有关于为什么XX不能正常YY的问题都是由于你没有想过如何实现XX,稍微想想,不难得出让XX不能正常工作的方法。
最后建议你想问题,要到点子上,既然你知道花指令是对抗的反汇编技术的,就应该去找反汇编相关的资料,而不是把问题越扯越远。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
是啊,就是因为没有理解到这个,我也想找关于这个的资料,其实我用的也是OD,但是OD显示指令也是会被迷惑的,这方面的资料<<INTEL开发者手册>>,我去看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
版主大大,我再问下<<Intel 64及IA-32 架构软件开发者手册>>全名是不是这样的。另外我还是有点疑惑,你是说在给定的数据的里没法确定一条完整的指令,但汇编器从程序的执行入口处进行分析,不是应该就可以确定每一条指令吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
????呵呵。。可能我还不太熟悉IDA吧!!!!个人观点IDA似乎是用来分析的。。怎么能得到程序结果呢?
刚才特意查了下什么是花指令。。。。感觉这东西不过是添加了点脏数据。。或者说把真相掩藏与大海之中。。。。。似乎与错误完全没关系。。
您说的程序执行出错。应该是反调试吧??这个,普通的反调试似乎有很多方法。。。不过如果拒绝任何调试器的调试。应该是修改了中断吧!!
不过个人感觉还是挡不住SOFTICE的。。。这东西似乎是个独立的操作系统。。
论坛最好能有个精华贴。能对各种概念做个稍微浅显的解释。。比如花指令。比如DUMP,比如IDT(其实好多英文,如果引用的时候能够写上全称,就非常帮助理解了)
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
版主大哥和CC大哥一样,一般露一下就不再出来了,唉。楼上这位兄弟可以再看看我最后的回复,版主说的花指令就是指在给定地址因为指令二义性,而造成的反汇编器对指令的误判,我其实是问,如果都从程序入口处开始判断,反汇编器应该能够正确的读到每一条指令了。因为是从最初的起点开始读,所以应该不会出现识别不了花指令的情况了吧。CPU应该就是根据这样的原理,所以从入口处按顺序读指令就不会出错的吧。
|
|
|