回 帖 发 新 帖 刷新版面

主题:关于VB里嵌入汇编的问题???

怎么样才能把汇编指令转换为十六进制的???

如果在VB里要实现程序跳转应该怎么做?

请问下面的汇编指令是怎么得来的???



MachineCode(0) = &H55 'push ebp
MachineCode(1) = &H8B 'move ebp,esp
MachineCode(2) = &HEC
MachineCode(3) = &H57 'push edi
MachineCode(4) = &H52 'push edx
MachineCode(5) = &H51 'push ecx
MachineCode(6) = &H53 'push ebx
MachineCode(7) = &H8B 'move eax,dword ptr [ebp+8]
MachineCode(8) = &H45
MachineCode(9) = &H8
MachineCode(10) = &HF 'cpuid
MachineCode(11) = &HA2
MachineCode(12) = &H8B 'mov edi,dword ptr [ebp+12]
MachineCode(13) = &H7D
MachineCode(14) = &HC
MachineCode(15) = &H89 'move dword ptr [edi],ebx
MachineCode(16) = &H1F
MachineCode(17) = &H8B 'mov edi,dword ptr [ebp+16]
MachineCode(18) = &H7D
MachineCode(19) = &H10
MachineCode(20) = &H89 'move dword ptr [edi],ecx
MachineCode(21) = &HF
MachineCode(22) = &H8B 'mov edi,dword ptr [ebp+20]
MachineCode(23) = &H7D
MachineCode(24) = &H14
MachineCode(25) = &H89 'move dword ptr [edi],edx
MachineCode(26) = &H17
MachineCode(27) = &H58 'pop ebx
MachineCode(28) = &H59 'pop ecx
MachineCode(29) = &H5A 'pop edx
MachineCode(30) = &H55 'pop edi
MachineCode(31) = &HC9 'leave
MachineCode(32) = &HC2 'ret 16 I tried everything from 0 to 24
MachineCode(33) = &H10 ' but all produce the stack error
MachineCode(34) = &H0

我会给高分的谢谢你们的帮助!!!谢谢。。。。谢谢!!!谢谢。。。。

回复列表 (共6个回复)

沙发


怎么没人??[em1]

板凳

你的主题就已经是个疯狂的问题了.
汇编是什么,机器码又是什么.寄存器是什么,寄存器有哪些.
自己慢慢搞吧!~

3 楼

小弟不懂还望多多指教...
VB不是可以嵌入汇编吗?

4 楼

vb.net 可不可以,我就不清楚了.

5 楼

首先按你说的那些汇编"十六进制代码"是经过编译得到的.其实进制只是一个表现的形式,可以认为它就是常说的二进制机器码.编译就需要一个编译器(当然你按书来查,并手工键进去也是蛮牛逼的,不过你还得处理地址什么的问题,也不是简单的事:).我们可以利用一些调试程序来同样办到.16位的你可以用类似DEBUG的调试程序,按A,在提示行下输入助记符(即汇编指令),每行按回车的时候程序会自动的把助记符组译到内存.然后再按U,就可以看到内存里的二进制代码了.如果是32位的,可能就得用类似SOFTICE这样的调试程序了.用法也和DEBUG差不多.上面说的是指比较短的代码时用的方法.如果是复杂的,得用文本编辑器写好源码,用专用的汇编编译器来编译.以前DOS下的*.COM文件就直接是二进制机器码的映像,现在WINDOWS怎么弄,还请你自己查查了.因为我也没试验过.
    以前QB有个ABSOLUTE函数,可以从一个地址执行机器代码(它往往利用数组来装填那些二进制机器码).至于VB,我不知道.似乎有一个读取数组首址的函数?那么如果要实现你说的功能就差一个类似QB的ABSOLUTE式的函数了.这种搞法似乎挺紧凑的,连DLL也不用了,就不知道让不让你搞?

6 楼

网上搜索了一下,好象比较早就有人这么做了.以下是他的办法

[url]http://www.bccn.net/Article/kfyy/vb/jszl/200602/3711.html[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册