用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
' w; d9 @) N0 m% k5 |- @% ^中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 6 X3 B) k2 K$ G" ]
" t) j ~3 u7 j( B- \% u0 {, H+ U9 i# i
8 c5 k/ [. q r$ \! \
1 E! A1 s) p _4 h0 u, }
一、简介 % T. c' V# S# Y% m4 s& g5 I
3 L3 |1 \' J- I3 k* W3 v AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。
( U5 t5 A _# }. _: R/ j W E) S6 i, }! j3 e
二、使用 4 ]6 v# r6 f" L1 v, v8 m
, w! q; m9 l# w8 O7 c2 N
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 . w, m% P! L9 s- }5 n) W
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
; G- N" t/ Q2 s$ o 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ( U( k% F/ s9 j+ n8 h
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 + h1 z2 a" n( i7 \4 ?- n/ K' v
, m& S. G; x t- M8 z, ~三、备注
8 Z6 t# x) E/ T0 a/ c. c/ Y
7 X1 }* h. C) T( f7 }! b 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 " b" ] a; q e8 J+ H+ p7 ?/ c
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 , t! h% w8 k$ a- \
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 $ }7 G" e- L6 V q7 k
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
' |( E3 Y, K. i, {3 m5 [8 s
, m+ g8 h$ a: t6 k8 U8 l主页:http://Yonsm.reg365.com
) t! [" Y% t! }% B邮件:[email protected] * R& x& j9 k8 q/ N
源码:如果需要,请访问作者主页 |