2017-5-8
10:24

root
root

[程序代码]VB内嵌汇编的模块示例

VB内嵌汇编的模块示例,利用该模块可以在VB中直接编写汇编代码,格式和汇编基本一致,

可以在IDE环境中运行,实现方式还是跟网上大部分内嵌汇 编的方法一样,调用CallWindowProc

函数来运行,本模块是在运行的过程中解析指令的,所以可以在IDE环境中运行,支持几乎所有的

X86指令 (当然,特权指令即使写了也执行不了),以及寻址方式,可以在VB中顺便学习一下汇编
下面是一段利用本模块查询CPU是否可以执行CPUID指令的代码,来演示该模块的基本格式:

VBScript code

    AsmBegin        '汇编代码开始
        '如果程序可以改变EFLAGE的第21位,那么就可以执行CPUID指令
        PUSHFD                  '将扩展标志压入堆栈
        POP EAX                 '然后弹出到EAX
        MOV ECX, EAX            '转移到ECX中
        XOR_ EAX, &H200000      '改变第21位     由于XOR指令与VB中的XOR关键字重名,所以在后面加了下划线
        PUSH EAX                '改变后压入堆栈
        POPFD                   '再弹出到标志寄存器
        PUSHFD                  '再压入堆栈
        POP EAX
        XOR_ EAX, ECX           '检查第21位是否为1,如果是,就说明可以执行CPUID
        JZ 2, True              '后面的True是可选参数,改变了JZ原来的定义,不是跳到特定的地址,而是往前或往后跳转多少字节
                                '默认该参数为False,还是按照原来的定义
        '可以执行
        CPUID
        '前面的JZ实际是跳到这里来了,2是中间的指令长度
        RET                     '返回到主程序
    AsmEnd            '结束汇编并运行代码,如果传入可选参数False,则不执行代码


源码示例:本地下载

文章如需转载请注明:转载自: 紫灵幽梦
« 上一篇 下一篇 »

相关文章:

vb读取access并且显示  (2017-5-11 9:18:27)

VB 获取CPU温度示例  (2017-5-8 10:35:11)

VB程序逆向反汇编常见的函数   (2017-5-8 10:32:0)

内存数据的读写(PC)   (2017-3-1 17:51:40)

用VB制作外挂   (2017-3-1 16:16:53)

DoEvents函数   (2017-3-1 16:16:0)

发表留言: