C++调用反汇编引擎BeaEngine, capstone与汇编引擎keystone、XEDParse
C++调用反汇编引擎BeaEngine, capstone与汇编引擎keystone、XEDParse
调用XEDParse:
// XEDParse.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
//1. 导入头文件
#include "XEDParse/XEDParse.h"
#ifdef _WIN64
#pragma comment (lib,"XEDParse/x64/XEDParse_x64.lib")
#else
#pragma comment (lib,"XEDParse/x86/XEDParse_x86.lib")
#endif // _WIN64
// 打印opcode
void printOpcode(const unsigned char* pOpcode , int nSize)
{
for(int i = 0; i < nSize ; ++i)
{
printf("%02X " , pOpcode[ i ]);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
XEDPARSE xed = { 0 };
printf("地址:");
// 接受生成opcode的的初始地址
scanf_s( "%x" , &xed.cip );
getchar( );
do
{
// 接收指令
printf( "指令:" );
gets_s(xed.instr , XEDPARSE_MAXBUFSIZE);
// xed.cip, 汇编带有跳转偏移的指令时,需要配置这个字段
if(XEDPARSE_OK != XEDParseAssemble(&xed))
{
printf("指令错误:%s\n" , xed.error);
continue;
}
// 打印汇编指令所生成的opcode
printf("%08X : " , xed.cip );
printOpcode(xed.dest , xed.dest_size);
printf("\n");
// 将地址增加到下一条指令的首地址
xed.cip += xed.dest_size;
} while(*xed.instr);
return 0;
}
**** Hidden Message *****
学习学习!
页:
[1]