用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。 . Y/ P0 P8 r& ~/ g% g- e7 d
中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 # k0 c: w( P9 }. I+ T$ C/ V1 i
) P2 \6 d, X G7 H0 ^5 D4 n8 q
. L6 h$ r% z2 {- M! g
/ Q/ b" D" W3 d, m9 B8 M3 F一、简介 1 Q% Z$ Z8 A5 E+ Z; \
* `* S6 }' S; B
AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。
1 G, V& g) B' z; B+ }8 Y( _' V$ m- B+ J4 d9 g, ]" r. H
二、使用 2 k4 I. c# s# [- ^& E
- L! t# O \0 e
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
5 L* N" W y. X3 T* @( A2 v 2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
/ e% Z* n) K+ @7 W 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 : W Z! A# T& @9 _% s
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。
- _- z, t; [& B, E4 a3 S& [: Q4 S |8 v
三、备注
/ r% [7 Q) s, q5 x& m# w# }, }
4 D' ^9 E: f" p& Q9 V2 d5 e 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
$ K5 t. T$ g" i0 x 2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 7 g- V6 H' H, w( q* _! e" @
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
4 Z0 L7 U! a8 C/ Q. S/ A 4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。 0 r& r1 m! x; |) U5 t$ G! p
, v: ?" w) Q- o; I+ W7 ?7 S( ~
主页:http://Yonsm.reg365.com ! b, ^0 c/ [( l, r5 m' w
邮件:[email protected] 4 x9 }. |: V' A% m7 |% ^6 Z
源码:如果需要,请访问作者主页 |