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

汉化任务 GDI32.DLL的代理DLL(solidji 请进)

[复制链接]
楼主: shane007
打印 上一主题 下一主题

[汉化任务] GDI32.DLL的代理DLL(solidji 请进)

11#
 楼主| 发表于 2010-4-13 20:39 | 只看该作者
收到,那我等你实现的版本。
回复 支持 反对

使用道具 举报

12#
发表于 2010-4-14 07:56 | 只看该作者
我也碰到这个问题了,MingW的编译不了 [s:102]
回复 支持 反对

使用道具 举报

13#
发表于 2010-4-14 12:39 | 只看该作者
发现有个叫APIHijack的库很受人推崇,终于把代码问题解决了,没有前面所说的问题,不过再编译他的cpp里的汇编出问题了...我觉得可能是我用code::blocks+mingW的关系,他给的例子我都编译不了 [s:102]" j" {1 F8 V3 a( L4 L/ Q% |
) Y5 h0 J2 ]7 `0 `) j
先下个VC++试试看吧

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

14#
发表于 2010-4-14 15:34 | 只看该作者

gdi32  code

改好了,用第一种方式实现的.
$ y$ o& F8 }0 \- s# k如果需要用到的系统头文件定义变量过多的话,可能不太适合,看你自己主要想实现什么功能吧 ; e2 ~, a  j$ H  X5 N
  o) J. C. _/ H: ]/ x+ W
代码先贴出来,gdi32.h里的东西是我从生成的gdi32.c里拷贝 分离出来的,原本是想改进一下, 1 {+ t- V4 `- ?0 Q, c
让gdi32.c里#include <windows.h>正常使用,gdi32.h里放重复定义的导出函数 / ~" @) ]. H) A0 K; P2 R. _2 u
这样尽量减少自己需要自定义的结构. 这一步还没分离完成,不过仅仅是想HOOK ExtTextOutA的话已经够用了 $ v8 \# T; P' f9 {; l/ k
4 F( G( g1 ]" L$ F: k% A( m

6 E- j) |' t+ v1 C; B4 C5 {' Q. u5 u相对原始生成.c文件,修改的部分有 + H" v% a/ u' ]& ~( z
1,    //_ExtTextOutA = (void *)GetProcAddress(hm, "ExtTextOutA"); . K" ]( `! A7 D& L2 q. O
    _ExtTextOutA = (ExtTextOutA_)GetProcAddress(hm, "ExtTextOutA");
9 @. n( e$ Q% X; v9 s7 m! _2,//PROXY_FUNCTION(ExtTextOutA) 8 t# z  y! W) K( |8 Z8 g
    由自己定义的钩子函数ExtTextOutA取代 # p7 f5 F+ C2 a& X. p; z4 k$ S" Y
3,gcc宏移值 , i% V7 N+ k. Q4 d$ V
#define POP_EBP     __asm{pop ebp}
0 ^$ s- B8 r9 y7 |( w; c& P#define PROXY_FUNCTION(FUNCTION_NAME) \\
) n9 X, Q  T; z        PROXY_PROTOTYPE(*_##FUNCTION_NAME) = 0; \\ 4 F2 P) [- {, o
        PROXY_PROTOTYPE(FUNCTION_NAME) { \\
( c. r% m' M, `% S) j) b        POP_EBP __asm {jmp _##FUNCTION_NAME} \\ 2 X" i" I' g: p% v# |5 m
        } & }, ^; p, \% E2 Q' [
, _( N' x2 C) T
记得为VC链接命令行添加 /DEF:"gdi32.def"
. {3 n- _, d. aPS:APIhijack好像只是打钩子,而不是伪造DLL

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2010-4-14 17:14 | 只看该作者
收到,多谢了。
! v! |2 B4 _/ _; R对了,是否能加上一个vc的工程文件?
: \, T  K( S# ~4 Y还有,_ExtTextOutA 建议改名为real_ExtTextOutA,更容易明白。
$ L( w) s, R0 Y( G" @* Z6 a( x我们修改过的ExtTextOutA等函数能否独立出来放在一个文件里,这样结构更清晰。
回复 支持 反对

使用道具 举报

16#
发表于 2010-4-14 17:53 | 只看该作者
这样命名是根据原作者的风格,我整理下在改吧,
/ t$ |& e8 O, L3 Y看能不能把重定义的部分分离得更彻底一些
回复 支持 反对

使用道具 举报

17#
发表于 2010-4-14 20:39 | 只看该作者
我不明白ExtTextOutA_是哪来的 [s:105]; q4 G# K. g3 C9 v) h
p.s 原来那个叫钩子.我还是第一次接触这个概念,嘿嘿
回复 支持 反对

使用道具 举报

18#
发表于 2010-4-14 21:56 | 只看该作者
VC 和VC++有区别吗
+ o  q$ f/ t5 x  p我下了个VC++ 2008的,编译不了啊
8 v& A/ ~, T3 _4 M    _CreateFontIndirectA = (void *)GetProcAddress(hm, "CreateFontIndirectA");3 Q! ^1 \: S' C' `
等等都有这么个错3 A' r/ {7 M2 K( b, f
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
: T$ R  L/ n4 Y% V, z# d* a/ D/ f2 {+ T
我先用钩子试试看看能不能编译
回复 支持 反对

使用道具 举报

19#
 楼主| 发表于 2010-4-14 22:49 | 只看该作者
试试看http://sourceforge.net/projects/dev-cpp/
& T! H) s7 i% X这个呢?是gcc的。
回复 支持 反对

使用道具 举报

20#
发表于 2010-4-14 23:52 | 只看该作者
原来是VC++是cpp不是c的原因  [s:116]
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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