用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
' h0 ?/ C5 t, D中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 6 F ]/ X$ Y# _; ]3 l$ |. M4 m
, e$ L+ D2 e6 P, M
' B7 p5 W2 e9 r+ ~
2 A( m; F. F- Q. U3 G( {# T6 f7 c' W" y一、简介
i1 B. A8 b; P
2 @1 @/ x: `& [' S: W AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 3 J2 N( X% U/ }. f
2 m8 m% J6 ?( H$ ?" O$ T二、使用
0 @& O0 B; U" L5 h1 h1 @( {0 u3 ~" F; e7 j- T1 ^
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
2 K7 I% [3 x+ H' S 2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
k; d4 e( q, J9 u+ F& Z; a- Q X- P 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。
S: j6 q7 G- E9 s: z, ]( \ 4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。
) U7 X( j4 A' Q$ r
/ v0 z& q) }& c$ T q6 w2 @' Z4 w, ]三、备注
8 X" S( P3 U$ {4 S
$ H9 G, s6 h. n9 U 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 0 [' ~# M0 t. a: ~1 v+ K
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 1 x/ q' w) s) _
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 # `' q9 A( G+ d! g2 {1 `
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
# g7 t8 Z7 q6 a2 H4 Z' A
6 Z+ s! L' y) a7 n! n主页:http://Yonsm.reg365.com , O. ^5 ]+ Z, A# q) d% e
邮件:[email protected] , D" b. q# T& P& G
源码:如果需要,请访问作者主页 |