吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10515|回复: 4
收起左侧

[转贴] eXeScope, XNResourceEditor & IDR 之Form中文显示补丁

  [复制链接]
Hmily 发表于 2012-7-5 18:25
From:www.unpack.cn/thread-74240-1-1.html

  在分析Borland Delphi或Borland C++程序时,一项非常重要的工作就是查找Forms中的事件处理过程,从而快速定位到目标代码。Forms通常是将DFM文件编码后以类型为"RC Data"的资源保存在可执行文档中,所以除了专用的分析软件,一些资源编辑器也可用来完成这项工作。
  中文或者说双字节编码的文字在Form中是以Unicode表示的。这些分析、资源编辑/查看软件在处理Form中的Unicode时基本上采用了相同的标准流程或库:对小于0x20、等于0x27(字符"'")和大于0x7F的字符,一律通过类似SysUtils.IntToStr的调用,将Unicode值转换为十进制的字符串,前面再加一个井字符来表示,即#ddddd。
  例如,以下Form片段:
object f_reg: Tf_reg
...
  object Label1: TLabel
...
    Caption = #26426#22120#30721#65306
...
  end
  object Label2: TLabel
...
    Caption = #36755#20837#27880#20876#30721#65306
...
  end
...
end
这些字符串犹如天书,看着头大。将这些Unicode转换为ANSI,实际上就是:
object f_reg: Tf_reg
...
  object Label1: TLabel
...
    Caption = '机器码:'
...
  end
  object Label2: TLabel
...
    Caption = '输入注册码:'
...
  end
...
end
总不至于还要准备一个编码转换软件,不断地复制粘贴、复制粘贴…,这可是体力活。或者会编程呐,就把这些个Forms保存为.dfm文件,再写个脚本来批量翻译。当然,最方便的是Patch这些软件,在中文环境中直接显示汉字。
  早期DeDe的原版也不支持直接显示中文,要patch过的版本才行。以下为eXeScope(作者为日本人)中的一个Form片段,DeDe显示为:
object FConf: TFConf
...
  Font.Name = MS Pゴシック
...
  object NextCB: TCheckBox
...
    Caption = 
      &Don't display this message from next time;次回からはこのメッセージを表示しない(&D)
...
  end
...
end
比较简单的处理,仅仅用于显示。不能编辑,也不能写回去。能保存修改的正确格式为:
object FConf: TFConf
...
  Font.Name = 'MS Pゴシック'
...
  object NextCB: TCheckBox
...
    Caption = 
      '&Don'#39't display this message from next time;次回からはこのメッセージを表示しない(&D' +
      ')'
...
  end
...
end
比较简单的处理,仅仅用于显示。不能编辑,也不能写回去。能保存修改的正确格式为:
object FConf: TFConf
...
  Font.Name = 'MS Pゴシック'
...
  object NextCB: TCheckBox
...
    Caption = 
      '&Don'#39't display this message from next time;次回からはこのメッセージを表示しない(&D' +
      ')'
...
  end
...
end
未经“汉化”的正确格式为:
object FConf: TFConf
...
  Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
...
  object NextCB: TCheckBox
...
    Caption = 
      '&Don'#39't display this message from next time;'#27425#22238#12363#12425#12399#12371#12398#12513#12483#12475#12540#12472#12434#34920#31034#12375#12394#12356'(&D' +
      ')'
...
  end
...
end
事实上,DeDe并未完善,很多功能都"Not implemented yet!",DaFixer也不再继续开发。对含有Unicode的Form的编辑根本就没有实现——点"DFM Editor"按钮试试看,会提示:
1.jpg

  它不知道怎么处理FConf中Font.Name数据类型为0x12的内容。数据类型0x12是指Unicode字符串,UTF-8字符串的数据类型为0x14,在DFM的编码、解码标准流程中调用相同的例程。Font.Name是长度为8的Unicode字符串:
004EF790:                         .46 6F 6E 74.2E 4E 61 6D          Font.Nam
004EF7A0:  65 12 08 00.00 00 2D FF.33 FF 20 00.30 FF B4 30  e.....-.3. .0..0
004EF7B0:  B7 30 C3 30.AF 30                                .0.0.0
  不管怎么说,那些年DeDe确是分析Delphi最好的工具。
  这里将用过的、经patch的三个软件分享出来:eXeScope、XNResourceEditor和IDR(Interactive Delphi Reconstructor),前两个支持Form直接中文编辑保存,第三个软件本身仅支持查看。

1. eXeScope
  版本6.50,2004/5/23发布,用Borland Delphi 7编写。有汉化版,但不支持中文显示和编辑。想来汉化的Rule No.1就是忠实于原著。
  官方下载:
http://hp.vector.co.jp/authors/VA003525/eXeSc650.zip
  共享软件,需要注册。可参考“Exescope v6.50 注册算法分析”。

2.jpg

eXeScope.exe            Size          MD5
 
   原版                 1,018,368     BE6C523369E811E94F417F5F378F5600
 
   补丁版               1,018,368     9B5ACE719F7640F0A075541F56188B36
2. XN Resource Editor
  版本:3.0.0.1,2005/12/17发布,开源软件。用Borland Delphi 2006编写。
  官方下载:
http://www.btinternet.com/~wilsoncpw/xn_resourceeditor_setup.exe
  之前一直用Resource Hacker,但它到版本3.6.0.92后作者停止了更新,对RCData处理不好。
  个人认为这个软件好于eXeScope。

3.jpg

<font face="新宋体">XNResourceEditor.exe    Size          MD5
 
   原版                 1,945,600     A0E4B835ABA9809EE6C067C2B1A89CD0
 
   补丁版               1,946,112     A4E7B3B03A252DDE72F9F80F7942114B</font>
3. IDR(Interactive Delphi Reconstructor)
  版本:2.5.3 beta,2011/10/17发布,免费软件。用Borland C++ 2002编写。
  官方网址:
http://kpnc.org/idr32/en/
  DeDe的继任者,强大的Delphi分析工具。能生成很好的map和注释文件,可通过插件mapimp载入OllyDbg中。
  虽然仅支持Form的显示,但是“Forms(F5)”标签下提供文本和图形两种显示模式。图形模式很直观地显示窗体,且本身就能够显示中文;本Patch用于文本模式下显示中文,同时“Save Delphi Project”命令保存的.dfm文件也是中文的。

4.jpg

<font face="新宋体">Idr.exe                 Size          MD5
 
   原版                 2,738,688     530140E345884616E0047C7ECDBB2F59
 
   补丁版               2,739,200     A65EAF1C13EF7603E48F5F27F414A288</font>
  Form编辑说明:
      a) 无论是中文还是西文字符串,前后各用一个单引号“'”括符。
      b) ASCII码小于0x20的字符,使用#dd的形式表示。
      c) 如果字符串中含有字符“'”,使用#39表示。
      d) 字符“+”用作续行。
  中西文混合及含字符“'”的情况,参见上面例子。

  Patch说明:未加壳、加密,方便交流。
      a) eXeScope.exe,增加0xD1字节的patch代码在区段CODE的末尾部分,文件大小保持不变。
      b) XNResourceEditor.exe,由于区段.text和.itext没有足够的空间,将文件头部增加0x200字节后,0xD1字节的patch代码放在00400400处。
      c) Idr.exe,区段.text增加0x200字节后,0xE4字节的patch代码放在尾部。

  下载:用附件中的文件覆盖对应软件的同名文件。

IDR.2.5.3.beta.patched.by.stillHiM.7z

774.96 KB, 下载次数: 111, 下载积分: 吾爱币 -1 CB

XNResourceEditor.v3.0.0.1.patched.by.stillHiM.7z

611.5 KB, 下载次数: 121, 下载积分: 吾爱币 -1 CB

eXeScope.v6.50.patched.by.stillHiM.7z

352.62 KB, 下载次数: 200, 下载积分: 吾爱币 -1 CB

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

Sound 发表于 2012-7-5 21:44
这个我很需要 Thank's hmily
MistHill 发表于 2012-7-6 12:09
非常感谢Hmily的支持鼓励!
今天刚注册,很高兴能在这里与大家交流。

点评

欢迎多多交流分享.  详情 回复 发表于 2012-7-6 12:29
 楼主| Hmily 发表于 2012-7-6 12:29
MistHill 发表于 2012-7-6 12:09
非常感谢Hmily的支持鼓励!
今天刚注册,很高兴能在这里与大家交流。

欢迎多多交流分享.
lyliucn 发表于 2012-7-7 19:00
貌似不错,收藏一个。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 12:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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