吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1763|回复: 7
收起左侧

[求助] CreateFontIndirectW方法求助

[复制链接]
sodiums 发表于 2021-1-26 17:24
游戏程序在使用CreateFontIndirectA选择字库时我大概的确是悟了,
但如果使用CreateFontIndirectW根据https://www.52pojie.cn/thread-1200805-1-1.html 小木曾雪菜
写的教程显然是不适用的
CreateFontW function如下
HFONT CreateFontW(
  int     cHeight,
  int     cWidth,
  int     cEscapement,
  int     cOrientation,
  int     cWeight,
  DWORD   bItalic,
  DWORD   bUnderline,
  DWORD   bStrikeOut,
  DWORD   iCharSet,
  DWORD   iOutPrecision,
  DWORD   iClipPrecision,
  DWORD   iQuality,
  DWORD   iPitchAndFamily,
  LPCWSTR pszFaceName
);


与CreateFontA function的区别在于最后一项pszFaceName的类型

用x32dbg打开游戏主程序对CreateFontIndirectW下一个断点
1.png

一直运行至文本跳动,可以看到成功下断,跟到右下角那个地址去
2.png

往上找有关于dword的call
3.png

根据定义,这个call及其相似

4.png

此处有第一个问题:lfCharSet是哪个?
一眼望去,最有可能符合的是这一条,日文是0x80 中文是0x86
5.png
显然我们要想80改为86
我便是这样改了~

该游戏编码校验有明显特征
对程序搜索cmp al, 0x81,找到一条符合,进入
6.png

按照大佬的讲法,将部分内容更改,理论上应该是这个样子的
lastr.png

但是更改后经测试,文本依旧乱码,糟心啊~求大佬指点一下,还有哪个地方疏忽了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

花边下丶情未央 发表于 2021-1-26 18:33
路径你要用Unicode编码
 楼主| sodiums 发表于 2021-1-26 18:42
花边下丶情未央 发表于 2021-1-26 18:44
sodiums 发表于 2021-1-26 18:42
路径改为全是字母也仍旧乱码

你要把ASCII编码转成Unicode的.W的函数涉及到字符的内容基本需要传的Unicode编码
花边下丶情未央 发表于 2021-1-26 18:46
你Hook这个函数,你用OutputDebugString输出参数你就知道怎么回事了

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
你与明日 + 3 + 1 我很赞同!楼主先把A版函数和W版函数学习下吧

查看全部评分

 楼主| sodiums 发表于 2021-1-26 19:10
花边下丶情未央 发表于 2021-1-26 18:46
你Hook这个函数,你用OutputDebugString输出参数你就知道怎么回事了

老兄麻烦详细说一下,虽然我觉得你已经说出答案了,但是我还是不知道该怎么弄
花边下丶情未央 发表于 2021-1-26 22:00
用易语言写了个简单的例程,
分别Hook了CreateWindowExA和CreateWindowExW
QQ截图20210126215023.png
这是CreateWindowExA的处理
2.png
CreateWindowExW
3.png
在这里 读出来的文本必须要UnicodeToAnsi 才能正常显示出ASCII编码

然后使用Depends.exe 作为被劫持的主程序
当读正常的ASCII编码时是可以正常显示出来的
4.png
但是你看下Unicode编码时是不正确的 需要转为ANSI才可正常显示出全部数据
Source就是原来的数据格式,New就是转换过的.

如果当你需要修改W函数的字符数据时,
你需要先把Ascii转成Unicode编码  在将字节数组数据写入  Unicode占两个字节
5.png 6.png 7.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
sodiums + 1 + 1 谢谢

查看全部评分

 楼主| sodiums 发表于 2021-1-26 22:39
花边下丶情未央 发表于 2021-1-26 22:00
用易语言写了个简单的例程,
分别Hook了CreateWindowExA和CreateWindowExW

多谢多谢,我晚上研究一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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