用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。 9 e: b! ], o$ N! E8 r0 P6 ?
中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。
8 b: m! y3 j. @2 z- k2 k$ [: U( x+ @6 M$ o1 W
5 N* E% @# [# }7 U& d! h" J6 X& V) @4 N; v* ?( Y
一、简介
% N" a/ B1 y( G& ?! J f9 I ?5 Y+ \2 m, M# _: W
AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。
6 [! W$ p% \; B4 _1 i) \1 R- F: |2 D/ @! {3 |
二、使用 - a" d2 B- A0 {
0 C+ J0 v% d$ m( v Z$ [/ N 1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
& E& r% I& J) ]# L! c 2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。 / a. V& }! n: K3 S
3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ( J9 q2 S: Q1 v# N& K
4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。
! |. n+ d' n5 I4 W7 C) H7 n. H
, q( D3 z& }8 v0 |" O4 M三、备注
/ u, Y! P$ Y3 E$ Q4 G# {; D. X4 p& R5 b
1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
1 P. f/ l$ n# w' a6 [. N M# x& P: t 2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。
7 U6 s* {- S. o" A/ Y 3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
6 p5 Z3 p3 L. E- a# ~6 L( ]8 J 4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
/ J; S& G5 [. f# X- h9 z1 n8 i
. Z y }3 e9 ~- Y7 Y主页:http://Yonsm.reg365.com 7 j( I, f) B7 c0 V" |$ R3 e7 j
邮件:[email protected] ' C( C5 w7 l. E& b* L7 v3 A F
源码:如果需要,请访问作者主页 |