在VC中ADE32反汇编引擎的使用,打算配合inline hook使用。。(~ o ~)~zZ

ADE32下载,CSDN上有,自己找下

1 在工程文件中加入ADE32.OBJ  和ADE32.H

2 在工程的CPP文件中加入
extern "C"
{
#include "ADE32.H"

void ade32_init(DWORD *);
DWORD ade32_disasm(BYTE *, disasm_struct *, DWORD *);
DWORD ade32_asm(BYTE *, disasm_struct *);
};


简单应用1:获取函数FUNC代码段的长度(一定要在Release下)

  void Func()
  {
    char *p = "my baby";
    printf("Hello world");
  }



    printf("Func Address = 0x%08X/n",Func);
    DWORD ade32_flagtable[512];
    ade32_init(ade32_flagtable);
    DWORD dwCodeLen = 0;
    // disassemble code section opcode by opcode

    for(DWORD ip = (DWORD)Func; ; )
    {
        disasm_struct s = {4,4};   // prepare to disasm 32-bit code

        // disassemble opcode
        DWORD len = ade32_disasm((BYTE*)ip, &s, ade32_flagtable);
        if (len == 0) break; // cant disassemble?

        // dump length, offset and hex bytes
        printf("(%i) %08X ",len,ip);
        for(DWORD j=0; j<len; j++) printf(" %02X",*(BYTE*)(ip+j));
        printf("/n");

        dwCodeLen += len;

        if (len ==1)
        {
            if(*(BYTE *)ip == 0XC3 || *(BYTE *)ip == 0XCB )  //retn  = 0xc3  retf = 0xcb
            {
                printf("Func Code Length = 0x%08X", dwCodeLen);
                break;
            }
        }
        ip += len;
    }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值