howto_cn.txt

来自「Ollydbg环境下的一款插件源代码」· 文本 代码 · 共 67 行

TXT
67
字号
---------------------
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 + =
减小字号Ctrl + -
显示快捷键?