阅读:2668回复:14
有什么办法可以简单地得到指令的长度?
不要反汇编,那太麻烦。怎样得到指令的长度?比如给它一个xor eax,eax,它就知道长度是2。
以前看到一个关于研究debug的文章,他说debug用到的方法比较巧妙,但我忘记了。 有谁对debug有研究?那东西那么小,功能如此强大,佩服ing。 :( |
|
|
沙发#
发布于:2002-06-18 12:12
除了让自己的程序了解机器编码规则外还真没什么好办法。Debug有高招?我也想知道。hehe
|
|
板凳#
发布于:2002-06-18 15:26
download microsoft detour, it enum all possible asm code ...
|
|
地板#
发布于:2002-06-18 16:05
download microsoft detour, it enum all possible asm code ... 大兄弟:( 1,为何总说洋文?:( 2,你不知道我为何要指令长度,看看这是什么版 :( 3,那个什么detour是什么玩意?详细信息?:( |
|
|
地下室#
发布于:2002-06-18 16:26
detour也是通过反汇编来得到指令长度的
|
|
|
5楼#
发布于:2002-06-18 16:30
detour也是通过反汇编来得到指令长度的 我不想那么做啊 似乎debug有些妙计 :( |
|
|
6楼#
发布于:2002-06-18 16:47
http://www.research.microsoft.com/sn/detours/
枚举所有的可能的asm code十分简单。 不过是定义一个数组罢了。 有什么复杂? 也要不了多少代码。 如果只是返回没有debug info的分析,程序不会大。象debug一类的东西。 具体为何用洋文,简单,我的os是洋文的,输入中文不顺。还是输入洋文简单。 |
|
7楼#
发布于:2002-06-18 16:57
大兄弟
1,我的系统也是洋文,但我输入中文很爽,我用紫光拼音 2,那东西用C写的? 我只是想找个最简单的方法来获得所有指令的长度,最好这部分代码用汇编写成最多2~3K,4~5K也凑合。 我倒是不是觉得反汇编麻烦,而是觉得太大 [编辑 - 6/18/02 by Koms Bomb] |
|
|
8楼#
发布于:2002-06-18 17:16
如果你是想查 x86 的指令,找 x86 机器码的编码规则就行了。
一些讲汇编的书上会有的。 |
|
|
9楼#
发布于:2002-06-18 17:20
如果你是想查 x86 的指令,找 x86 机器码的编码规则就行了。 这我当然知道,但是看我说的,是不想反汇编啊,那样会比较大啊 :( |
|
|
10楼#
发布于:2002-06-18 17:30
我所理解的你的意思,你看看对不对:
你想读一个编译好的程序,当发现 31H, C0H (或发现 31H)时,就能够知道这是一个 2 字节指令,当然你并不想反汇编它,也就是说你并不关心它是 xor eax,eax 还是其它的什么。 但是,如果不知道机器码编码规则,你不可能知道它是 2 字节指令。只不过你不需要完整的实现编码规则,也就是你所说的“不反汇编”。 [编辑 - 6/18/02 by cn18799] |
|
|
11楼#
发布于:2002-06-18 17:33
兄弟说的对,我正是这个意思。我想要的是指令的长度,这样我可以确定哪里是下一条指令,但我不必知道这个指令到底做什么的。
主要是想找个比较巧妙的方法,不必真的去反汇编,不过估计要构造一些表。 :( |
|
|
12楼#
发布于:2002-06-19 11:51
我想你还是要反汇编,要不然没有办法知道。
|
|
13楼#
发布于:2002-06-19 12:04
我想你还是要反汇编,要不然没有办法知道。 机器码和汇编语言是两回事。 要达到上面的目的: 1. 必须要懂机器码(至少要有机器码的概念)。 2. 既然懂机器码,就没必要再把它翻译成汇编语言。 [编辑 - 6/19/02 by cn18799] [编辑 - 6/19/02 by cn18799] |
|
|
14楼#
发布于:2002-06-19 13:30
Pre-analysis the mapping table.
Try to find the rule of instruction length. P.S Detour is API Hook sample. |
|
|