- 注册时间
- 2021-4-16
- 最后登录
- 2023-9-20
- 在线时间
- 1 小时
编程入门
- 龙马币
- 18
|
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;
- }
复制代码
|
|