⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 howto_cn.txt

📁 Ollydbg环境下的一款插件源代码
💻 TXT
字号:
---------------------
OllyMachine源代码说明
---------------------

1. 前言
2. 简述
3. 如何新增API
4. 联系

----
前言
----
OllyMachine 0.20版是我写的最后一个版本,今后如果没有什么特殊情况,我将不会对它继续更新,因此我在这里公开它的源代码,并且不对其保留任何权利。如果您有需要,可以自行进行修改,但我希望您在修改之后能把源代码寄给我一份。

BTW,请不要问我为什么不再更新了,原因很简单——我是一个穷人,要为生活而奔波。

----
简述
----
OllyMachine是在VC 6.0下开发的,请打开OllyMachine.dsp,然后按F7编译。它大约有10000行源代码,主要分成两个大类:Assembler和VM。

-----------
如何新增API
-----------
请按以下步骤新增API:(有点烦,请耐心看完,但熟悉之后就不会有问题的)

1. 打开文件VM.h,找到这一行;
#define MNEMONIC_COUNTS 122
每新增一个API,就把后面的这个数字加1

2. 打开文件VM.h,找到MNEMONICTYPE这个枚举变量,在它的最后新增您所希望的API的名字,一般命名为:
MC_XXXXXXXX
其中,XXXXXXXX为新的API的名字。

3. 打开文件VM.h,在构造函数CVM()中,新增:
m_Mnemonics[MC_XXXXXXXX] = "XXXXXXXX";
这是为了让Assembler能够识别API的名字。

4. 打开文件VM.h,在构造函数CVM()中,新增:
m_nMnemonicLen[MC_XXXXXXXX] = 1;
这是为了让Assembler在构造符号表的时候能够得到正确的偏移。
一般来说,API的长度都应该为1。

5. 打开文件Assembler.cpp,在函数GenerateCodes()里面,新增:
case MC_XXXXXXXX:
    I(&fii, MC_XXXXXXXX);
    break;
这是为了让Assembler能够对API生成其opcode。

6. 打开文件VM.cpp,在函数Execute()里面,新增:
case MC_XXXXXXXX:
    nRetCode = DoXXXXXXXX();
    VM_STATUS_ERROR(nRetCode);
    m_Cpu.eip += m_nMnemonicLen[MC_XXXXXXXX];
    break;
这是在虚拟机里面调用相应的API实现代码,必须由您自己完成DoXXXXXXXX()这个函数体。

----
联系
----
如果您有任何疑问,请发E-Mail给我:admin@luocong.com
或者在轻描淡写编程论坛可以找到我:http://www.luocong.com/bbs

作者:罗聪
日期:2004年12月7日 15:27
      于珠海金山软件公司毒霸引擎组

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -