设为首页收藏本站

单机游戏

 找回密码
 - 注 - 册 -

QQ登录

只需一步,快速开始

查看: 396|回复: 2
打印 上一主题 下一主题

[求助] hhyy_best进来下

[复制链接]

14

主题

4

听众

458

积分

少尉

UID
765949
阅读权限
70
注册时间
2012-4-22
积分
458 个
金钱
2887 Pb
存款
0 Pb
臭鸡蛋
1 斤
切糕
8 斤
贡献
0
跳转到指定楼层
楼主
发表于 2012-5-15 09:47:59 |只看该作者 |倒序浏览
ck21.5e的汉化你们在做了吗?我试着研究了下你破解的1.03的EXE文件,把你写的代码弄进去了,不过出现了00edb16f内存不能为read,进内存看只有几行字读出正确,其他都是乱码,而且只有一半
00EDB16B    85C9            TEST ECX,ECX
00EDB16D    74 59           JE SHORT 3ck2.00EDB1C8
00EDB16F    8B8499 20080000 MOV EAX,DWORD PTR DS:[ECX+EBX*4+820]
00EDB176    85C0            TEST EAX,EAX
00EDB178    74 07           JE SHORT 3ck2.00EDB181
00EDB17A    80FF 00         CMP BH,0
00EDB17D    75 14           JNZ SHORT 3ck2.00EDB193
00EDB17F    EB 0E           JMP SHORT 3ck2.00EDB18F
00EDB181    0FB6DB          MOVZX EBX,BL

00EDB258    8B93 50010000   MOV EDX,DWORD PTR DS:[EBX+150]
00EDB25E    52              PUSH EDX
00EDB25F    51              PUSH ECX
00EDB260    E8 FBFEFFFF     CALL 3ck2.00EDB160
00EDB265    803CE4 20       CMP BYTE PTR SS:[ESP],20
00EDB269    75 04           JNZ SHORT 3ck2.00EDB26F
00EDB26B    59              POP ECX
00EDB26C    59              POP ECX
00EDB26D    EB 54           JMP SHORT 3ck2.00EDB2C3
00EDB26F    83FE 00         CMP ESI,0
00EDB272    75 0A           JNZ SHORT 3ck2.00EDB27E
00EDB274    C782 1C080400 0>MOV DWORD PTR DS:[EDX+4081C],0
我想问下那ECX+EBX*4+820的820怎么来的?
还有EBX+150的150和EDX+4081C的4081C是怎么来的?1.05E的代码和1.03B的差不多,问题是不是就出在这上面?
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
转播转播0 分享淘帖0 分享分享0 收藏收藏0 顶0 踩0

819

主题

14

听众

2万

积分

管理员

Clannad最高,其次Hoi,恩

UID
89573
阅读权限
255
注册时间
2007-11-1
积分
21527 个
金钱
310348 Pb
存款
324448 Pb
臭鸡蛋
33 斤
切糕
526 斤
贡献
109

52汉化工作组 52MOD勋章

沙发
发表于 2012-5-15 10:52:08 |只看该作者
啊!!!打了半天子按错白打了。。。
谁说不能换签名的!
回复

使用道具 举报

819

主题

14

听众

2万

积分

管理员

Clannad最高,其次Hoi,恩

UID
89573
阅读权限
255
注册时间
2007-11-1
积分
21527 个
金钱
310348 Pb
存款
324448 Pb
臭鸡蛋
33 斤
切糕
526 斤
贡献
109

52汉化工作组 52MOD勋章

藤椅
发表于 2012-5-15 11:01:20 |只看该作者
820是p社的设计,一个字体的一个字符的信息占用0x820的内存。其中20是这个字体的大小位置等信息,800是它和别的字母相邻时的缩进等。所以每次为每个字母分配820内存,随后把指针集中存放到一个地方。那么按照ascii码*4加上基地址就能找到这个字母的信息了。

对汉字,如果820一个字符来个几千字就是快10M一个字体,而hoi多达几十个字体是恐怖的内存占用。而820的后800对汉字其实毫无意义。所以我们干的是每个字符只分配20的内存存放真正有用的信息。每次显示需要调用那820的信息时,用那20伪造个820的出来传递出去。40820=4*10000+820。4字节一个指针,gb码双字节最多10000,820是伪造信息的缓存。4081c只不过是挪用最后一个字节(反正gb码没ffff)干别的。。。

至于150,我们知道正常指针应该存放在ebx+(ascii)*4 +92的位置。。。150只是随手打的就统一把那40820存放在那里了。。。于是每次显示返回的其实都是ebx+150,只不过ebx+150指向的那40820的内存的前820被伪造成正确的信息了



有兴趣的同学大爱啊,加我qq吧,见论坛消息~~
谁说不能换签名的!
回复

使用道具 举报

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

Archiver|手机版|单机游戏    

GMT+8, 2025-6-20 06:36 , Processed in 0.077900 second(s), 14 queries , Apc On.

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部