设为首页收藏本站官方微博

【汉化工具】中间DLL生成工具 AheadLib

[复制链接]
查看: 3111|回复: 7
打印 上一主题 下一主题

【汉化工具】中间DLL生成工具 AheadLib

跳转到指定楼层
楼主
发表于 2008-11-9 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【汉化工具】中间DLL生成工具 AheadLib

用这个工具可以很简单地生成中间DLL的源代码,在源代码里调用Windows标准DLL的显示函数之前,替换英语字符串为中文,可能是实现汉化的一种新方法。
* z2 i5 m0 p; `& {. \' N% `中间DLL里的替换逻辑可以写成查找外置字符串替换表的形式,即发现送给显示函数为Hello,到字符串替换表查找后,发现Hello的对应中文为:你好,就把 你好这2个字送给显示函数,对不同的游戏,准备不同的替换表就行了。 ( H, ~: Q0 e% f( w3 t
, m1 o9 C1 F8 W! V- N' F! }/ a9 g* g  W
4 d: c( D" E6 M+ m4 O" ^8 t5 F

; o6 k' Z& @( C; N+ @' V0 J: J一、简介 # d" w, H' U$ r+ l* L" {5 b

7 q5 Q' }" K+ l2 p9 W  AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 ( b2 Q2 k5 g9 H( b( {

7 r8 z6 d0 p. ^) B5 C二、使用 . L, s4 `" T/ O0 c  ^: ^
# C* T$ l& j  U/ f2 F3 C. R
  1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。
% J+ R, U* x$ O" `2 O  2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。
/ ]) R+ `; e( W: T& N; W  3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。 ( }3 }- m9 p4 G$ J" y
  4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 ( i6 h, ~1 O3 ^1 T& N
7 _; b, W; S: ]) D( L4 e
三、备注
& C& v- l  l2 u- ^& z) ?" i% V
6 w( v$ T0 T! K: @0 a! u! N  1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。
  w; n8 m8 e+ a# E* {, I9 f  2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。 : W3 b3 }4 B0 X& M7 D
  3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。
& J5 a: ~% J& l  4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
/ q* z( z$ N* k# l, }% x
$ ^, p' @& J: i! a' y: s主页:http://Yonsm.reg365.com
5 W! C3 j$ A! E# z; u5 Q( E邮件:[email protected]
$ E  o) S# S: T7 j+ S源码:如果需要,请访问作者主页

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
 楼主| 发表于 2010-4-10 23:19 | 只看该作者
给新人看看
回复 支持 反对

使用道具 举报

板凳
发表于 2010-4-11 11:10 | 只看该作者
这样替换,不是直接改文本方便些?除非是那字幕找不着
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-4-11 11:40 | 只看该作者
引用第2楼scgame于2010-04-11 11:10发表的 :
* R3 {, p% ^, `! i这样替换,不是直接改文本方便些?除非是那字幕找不着

6 P9 [. t" @. e& m* \% G" T/ d, @) J
) {/ v" m6 B3 y- x% Q4 v说对了,就是对付字幕找不到的情况。
回复 支持 反对

使用道具 举报

5#
发表于 2010-4-12 08:52 | 只看该作者
  1. ALCDECL AheadLib_draw_text(void)
  2. {
  3.     // 保存返回地址
  4.     __asm POP m_dwReturn[70 * TYPE long];
  5.     // 调用原始函数
  6.     GetAddress("draw_text")();
  7.     // 转跳到返回地址
  8.     __asm JMP m_dwReturn[70 * TYPE long];
  9. }
复制代码
我把上次想用DLL解决的游戏又装了下,发现他的CPP是这样的,似乎无法获取送进去的argument啊
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-12 11:18 | 只看该作者
gdi里有draw_text这个函数吗?是drawtext吧?
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-12 11:53 | 只看该作者
哦,那个不是GDI的,上次在看的一个游戏里的一个dll
; H6 F) O. |! S& G' W  T1 y2 z是个引擎
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2010-4-12 17:11 | 只看该作者
引用第6楼scgame于2010-04-12 11:53发表的 :
( Z9 R! h) F$ G. N  j哦,那个不是GDI的,上次在看的一个游戏里的一个dll # H" E6 A" m3 w8 L. \
是个引擎
7 ]; ~" t" _) B  R" T8 Q7 |2 L
; e1 F1 b) E% r; J& L$ {7 n
建议你还是用这个,原理是一样的。  k5 m( K, b# G0 j
https://www.chinaavg.com/read.php?tid=21849
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表