请选择 进入手机版 | 继续访问电脑版

C++编程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2071|回复: 0

BeaEngine的使用--读取自身代码

[复制链接]

4

主题

9

帖子

65

积分

码农

Rank: 2

积分
65
发表于 2016-4-18 14:53:59 | 显示全部楼层 |阅读模式
使用beaengine,可以读取自身当前的代码。
// MyDiasm.cpp : 定义控制台应用程序的入口点。
//
#include "windows.h"
#include "stdio.h"

#include "HEADERS/BeaEngine.h"

int main(void)
{
        /* ============================= Init datas */
        DISASM MyDisasm;
        int false = 0, true = 1;
        int len, i = 0;
        BOOL Error = false;

        CONTEXT context;
        HANDLE        hprocess;
       
        HANDLE        hthreadt;

        /* ============================= Init the Disasm structure (important !)*/
        (void) memset (&MyDisasm, 0, sizeof(DISASM));

        /* ============================= Init EIP */
        memset(&context,0,sizeof(CONTEXT));
        context.ContextFlags = CONTEXT_CONTROL;
       
        DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),&hthreadt,0,FALSE,DUPLICATE_SAME_ACCESS);
       
        GetThreadContext(hthreadt,&context);
       
       
        MyDisasm.EIP = *(DWORD*)(context.Esp+0x1c);

        /* ============================= Loop for Disasm */
        while ((!Error) && (i<100)){
                len = Disasm(&MyDisasm);
                if (len != UNKNOWN_OPCODE) {
                        (void) puts(MyDisasm.CompleteInstr);
                        MyDisasm.EIP = MyDisasm.EIP + len;
                        i++;
                }
                else {
                        Error = true;
                }
        };
        return 0;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|C++编程  

GMT+8, 2019-9-22 22:14 , Processed in 0.093750 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表