月光小丫头 发表于 2024-4-12 15:35:26

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 *****

黄福寿 发表于 2024-4-14 20:22:02

学习学习!
页: [1]
查看完整版本: C++调用反汇编引擎BeaEngine, capstone与汇编引擎keystone、XEDParse