用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。 1 l8 Y1 O& l7 f8 f+ |) ]
中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。
) ^8 y) D. T- G6 Z f
" X/ i N, C& c! q6 x" ~3 A6 `; }. |" Y! y5 v- K. i/ {3 h2 `
y' y/ T" [1 a5 s
一、简介 & o/ i" j' D! y. U
. } D4 q C: P. K+ ~8 n; O AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 9 Q! j& p6 _$ B. P( b
! q: q! I/ c# H
二、使用 ; ?5 `/ Q0 j/ I6 {4 R
. j7 _4 S8 l" n, H 1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。 5 p! u) S9 i# D3 F
2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。 , H: |$ K! B, Q+ j
3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。
' c5 m# [$ X: s3 f" w9 g 4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 0 D* L1 w) r4 B# I6 N" D, c
; @3 f8 k8 R. ^5 J+ x$ a三、备注
5 s# s/ R& N3 M" W, c+ H# p& V; y6 f( m9 M9 n' M+ v5 G& G
1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。 8 Q* u4 ]( ?- }% A( i# x9 c }- H
2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 2 W% d% T* T2 D% w+ e3 h
3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。 8 O8 F, p$ D% m! a, O2 |
4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。 - {# U# b; N# L9 ~0 J7 T7 |
" o. m3 a0 ]; ]( g( T
主页:http://Yonsm.reg365.com
* ]) n2 a/ G) Z" {# j" T邮件:[email protected]
1 e' x. r) a. C8 g# ~1 m Y2 v源码:如果需要,请访问作者主页 |