用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
* z2 i5 m0 p; `& {. \' N% `中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 ( H, ~: Q0 e% f( w3 t
, m1 o9 C1 F8 W! V- N' F! }/ a9 g* g W
4 d: c( D" E6 M+ m4 O" ^8 t5 F
; o6 k' Z& @( C; N+ @' V0 J: J一、简介 # d" w, H' U$ r+ l* L" {5 b
7 q5 Q' }" K+ l2 p9 W AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 ( b2 Q2 k5 g9 H( b( {
7 r8 z6 d0 p. ^) B5 C二、使用 . L, s4 `" T/ O0 c ^: ^
# C* T$ l& j U/ f2 F3 C. R
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
% J+ R, U* x$ O" `2 O 2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
/ ]) R+ `; e( W: T& N; W 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ( }3 }- m9 p4 G$ J" y
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 ( i6 h, ~1 O3 ^1 T& N
7 _; b, W; S: ]) D( L4 e
三、备注
& C& v- l l2 u- ^& z) ?" i% V
6 w( v$ T0 T! K: @0 a! u! N 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
w; n8 m8 e+ a# E* {, I9 f 2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 : W3 b3 }4 B0 X& M7 D
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
& J5 a: ~% J& l 4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
/ q* z( z$ N* k# l, }% x
$ ^, p' @& J: i! a' y: s主页:http://Yonsm.reg365.com
5 W! C3 j$ A! E# z; u5 Q( E邮件:[email protected]
$ E o) S# S: T7 j+ S源码:如果需要,请访问作者主页 |