由于用 Windows 7 的VS2010的 Unicode环境编程,由于调试的目的,开发了一个简单的反汇编引擎。
下面给出相关的示例代码:// AssemblyTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "disasm.h"
/*
nt!PsGetProcessImageFileName:
818b79fb 8bff mov edi,edi
818b79fd 55 push ebp
818b79fe 8bec mov ebp,esp
818b7a00 8b4508 mov eax,dword ptr [ebp+8]
818b7a03 056c010000 add eax,16Ch
818b7a08 5d pop ebp
818b7a09 c20400 ret 4
818b7a0c 90 nop
*/
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char code[18]={0x8b,0xff,0x55,0x8b,0xec,0x8b,0x45,0x08,0x05,0x6c,0x01,0x00,0x00,0x5d,0xc2,0x04,0x00,0x90};
DETAILED_DASM Detailed = { 0x401000 };
_tprintf(_T("%d\r\n"),sizeof(code)/sizeof(unsigned char));
for (int i=0,j=0,t=0;i<=7;i++)
{
j=Disassemble(code+t, Detailed );
_tprintf( Detailed.Assembly );
_tprintf( _T("\r\n") );
t=t+j;
}
return 0;
}
主要文件为:disasm.cpp 和 disasm.h
AssemblyTest.rar
(19.53 KB, 下载次数: 147)
QQ:1473656864
Visual C/C++ ,汇编语言,驱动交流群:177822398,177822108
|