您的位置:首页 > 其它

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

2010-04-29 17:04 1041 查看
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;

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: