用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
7 `; ]4 B. ?. }7 j! J3 g- ]1 M中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 / P* z5 z( y, N% _( {' N
- B- a7 F4 F0 K" L: p. M: ]' x! G+ A+ ~+ ^5 h2 r% R
! X7 |, K; d& d _一、简介
9 r/ B$ ~' g1 P" b; ?% @& s7 J
2 I% b& M& P- A9 C2 h: M. o AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 1 ^6 U* b( s% D% w* b" y9 d- E) _# A
/ l. ]' w# O* h+ b) @5 h
二、使用 , R5 p; _$ L N% a+ Q+ u8 V! \
8 {5 J" C2 R& x% a. g5 L0 ]! R 1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 3 q1 p% V" N/ X5 p5 Z
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
( m3 S' B0 A, U3 @$ }9 w 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ) ~) h) z2 |# m: [! A1 Z6 y- F
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 6 Y, K8 D+ U* u" x( z
. R* }4 f# k& `& p* h三、备注
. @% ]$ X' n1 l" l# v9 j9 f8 b6 i! P2 k" W5 f
1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 ( V* I. Q1 W& z& c
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。
; ~2 F L* ^1 m) }- r 3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 ) k- Y0 d8 Z7 I- T( x: u( i& y8 ^
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。 & ~6 f9 s1 W; n1 g& N, ]$ c3 W
8 K' y, W) E: y5 n4 _$ q
主页:http://Yonsm.reg365.com
. F9 Y7 g9 E+ W% x- B8 j; Q" _% \邮件:[email protected] # A* Z$ y1 P, q# d; w
源码:如果需要,请访问作者主页 |