用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。 7 j3 i: B* K' ]: M+ i( E
中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。
% d( z. w! v$ G2 z' U
5 X3 ~+ x# t1 T( A( k6 V% c/ N2 c+ |% }( e9 _1 @
% q( ?$ _! c' z+ i
一、简介
G$ {6 N5 Q: r+ y; r- _6 j/ C3 D5 _: n2 n
AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。
+ _: B8 y/ }$ p* n. x( p& V- }9 s) A( x) x
二、使用
5 A1 p1 h' s5 N5 S0 r% i: c$ I5 D& _$ ~5 E: a8 C6 |
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 * \$ Y+ e/ r* {. q
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。 & q: n l4 z% D
3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 6 H8 t1 \; S8 n: H
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 5 m5 c( [9 m: H3 q8 m# r
5 R9 L" ]: F G+ {) f- n2 I
三、备注
9 k/ [5 @: n9 _* J9 W4 X5 q& }# Y% }/ p+ L1 x, u: | V
1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 $ S" X0 ]" w% m5 J6 p! O/ u
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 , G* |2 g& @- M+ t8 T
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 . b* x1 `- W" c
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
# O/ t* `- @* R. f: U/ v- K8 G& H' C, P- b. }9 C5 R4 [$ t
主页:http://Yonsm.reg365.com / p7 F# I* r# Y% {
邮件:[email protected]
8 }6 b8 D9 X; W6 k% H. x源码:如果需要,请访问作者主页 |