用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
' A- j5 C* e, ~3 m2 Q) v7 R中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。
7 K0 Z3 r( M3 ?- a$ O+ a5 R! g; c6 P8 p' B2 I
2 V: K6 U; j3 d8 P$ }4 i; {
A# @" R2 t1 H) Z3 n( f一、简介
; m) p9 ?9 R+ g9 N" I1 O. U
$ b+ w$ x5 R3 C% u' [$ f+ a% ~* L6 y AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 , U" |7 Q! Y) t0 R6 P
( m$ [& G" R0 K3 \2 f
二、使用
- o5 n6 f7 D. `# ?- K' c+ i2 l8 t" k) w) w6 V
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 2 e; N# P' {2 \: _1 _' q& h6 y
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
$ i2 o1 @7 }+ h 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ' f* ^2 ^7 [: v
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 ' W# L" D" `) J4 Q$ H
( K$ G9 T; J& L5 O1 _三、备注 8 @& E/ N% ]$ P5 \
7 _ b( q; }& ]% s* k" a 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
$ u2 e- d1 {5 Z6 w: d 2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 - K7 S% F, X2 E2 x2 V, `* r
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
8 a2 d, l% ]: P8 G( f8 ?* W, B H 4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
- x! W! f6 }+ U f1 v; }4 @4 H; ~$ O) F6 _4 E/ A
主页:http://Yonsm.reg365.com
5 ]8 n4 E& D# _' X) a* d: e2 K邮件:[email protected]
1 L! j6 a) s# _: B源码:如果需要,请访问作者主页 |