用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。 2 Y6 i A2 c& y' N2 Q8 |# T3 p6 f
中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。
- U: N0 l# ?( ?6 Q
7 H2 }' |! `3 U: t' Y& G1 s! j# m% Y2 q! D4 h1 i9 Y& i
* {- |* ~: G6 F: O' e. D
一、简介 6 O7 H3 ?8 E! B# q. m) m% J
, i% P* o4 h6 L, o
AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 $ r( `+ D. \; y% L1 s+ p3 |; |
' o7 s5 Z; M# X8 S
二、使用
; D% T/ G, Q7 N$ N! ~- j0 s+ V9 K( f/ N9 h( w; b
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 3 y+ G8 w2 a( p$ v# i5 s3 `8 U
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。 . ?8 O1 m2 k- z2 K2 t
3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。
& V g6 U6 Y# V' c% d 4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。
9 D2 O% f& r- A7 X$ u
& V4 u- W) n7 D/ E6 T3 f3 J1 \3 h三、备注
0 ?* g \; N E1 ^5 I# y1 |) b+ _; `- f
9 R3 L& ?, b) n8 I 1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
# [. N) n* F( G7 A1 [( l, ` 2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 . ?' g# _: P1 N0 K. v+ ^0 J( D- a0 N; R
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 ! b' s: d5 x7 \2 |! ?
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
9 y5 L, j" R3 g( [) t* h( \1 X8 R4 P" c0 T2 j& t4 n0 \! F5 ]
主页:http://Yonsm.reg365.com
* q$ [5 ^# _ \& i. J; W5 A M邮件:[email protected]
( I4 s$ L& ?$ _* v0 q! V! A1 @* Z源码:如果需要,请访问作者主页 |