在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;
}
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;
}
相关文章推荐
- VC++使用OD反汇编引擎(非BC做DLL或LIB包装)
- 【翻译】intel指令格式与长度反汇编引擎ADE32分析——来自看雪软件安全网站
- c/c++ 下使用内嵌汇编(inline assembler) (转自MSDN)
- 我的学习笔记之四——inline使用DLL进行全局HOOK的改进(ring3_inline_dll_hook_Messagebox_临界区)
- vc++实现Inline hook KeyboardClassServiceCallback实现键盘记录
- 基于VC++开发InlineHook网络数据发送接收函数
- VC使用hook技术实现定制标题栏
- vc++实现Inline hook KeyboardClassServiceCallback实现键盘记录
- 如何混合使用vc++和汇编
- 32位/64兼容 VC inline 汇编极限优化范例之颜色混合: AlphaBlendPixel
- VC++内使用汇编
- VC中使用汇编语言
- PC管理端与评委云打分配合步骤及疑难问题汇编,即如何使用PC管理端的云服务管理功能
- 【翻译】intel指令格式与长度反汇编引擎ADE32分析——来自看雪软件安全网站
- vc中使用汇编asm文件 收藏 (转)
- 不使用汇编在vc中转换类的成员函数为一个线程的通用代码
- 使用VC将C语言代码转为汇编
- 基于VC++开发InlineHook网络数据发送接收函数
- win32汇编--实现远程线程注入进行inline hook
- 使用tornado模板引擎配合yaml构建nginx配置接口 [扩展saltstack] 推荐