用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
. ~( J" A0 V! H Y: E" h中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 7 W7 b! B8 I: ~6 I& A- n
! f( K0 Z" o5 f2 W3 ^5 }4 `! j8 j( D% \2 ~! g: |: l
1 l" k5 y: N! i- g2 p) w一、简介 - [, x8 G% m8 Y8 `" U' G9 \
g8 Q% ?0 O1 d
AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。
4 l# V y4 x( [7 h3 u* m1 N8 }" V, F) g1 n ^% |9 x- S) Z
二、使用
; J: C4 |0 U+ W3 f( G) h5 H% p* { J, J
1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
' T* b8 l: H6 o 2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
& V! g5 v4 p& a6 z 3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。
, [- S3 Y( b# p* O( Y, C 4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。
/ Z# v0 x0 z1 p* c. }' N* `* `; h7 T; h7 o
三、备注 2 r2 q8 e, k$ _) ?2 O1 U$ U; O" Z& r/ L
+ k; E# `6 X/ f# P, t1 X
1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 0 T) f# r8 t3 p$ Z% f7 [8 w
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 `+ T" C+ K1 B- C# m. F: i) w
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
4 U0 L( q" w% U, ]4 z 4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。 3 Z; ?7 e# U" [3 x* F$ X S) e
! N {5 [( D6 Q7 r0 T主页:http://Yonsm.reg365.com
4 i5 o" S* x. p' q4 q邮件:[email protected]
" p: r& u8 W% [$ k2 k源码:如果需要,请访问作者主页 |