首页
社区
课程
招聘
还是关于W32DASM下中文字符串的显示问题
发表于: 2004-9-30 10:07 8556

还是关于W32DASM下中文字符串的显示问题

2004-9-30 10:07
8556
现在很多国产软件的提示都是中文的,在原版W32Dasm中反汇编无法显示中文字符串。现在的一些改进版本可以支持此功能,可是有些软件的字符串还是显示的乱码。请问是什么原因?以前看雪说可以在十六进制编辑器下改为英文提示再反汇编,请问如何改?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
老弟,你的问题也太那个了吧?就好象用筷子怎么吃饭一样的难回答
2004-9-30 11:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
为什么难回答呢?是我的问题表述不够清楚?
2004-9-30 11:51
0
雪    币: 212
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
jhhht老师 您再找找资料吧 看雪的人不大回这种帖
2004-9-30 12:58
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
为什么不回答呢?难道这里的人都比较拽?
2004-9-30 16:51
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
6
运行UltraEdit 打开要改的文件,单击[查找]菜单项,输入你要找的中文字串,找到后将其改为英文字串 OK? :)
2004-10-1 10:03
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
no no .全是乱码,在ultraedit里面也是一样。不ok!
2004-10-1 17:59
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
字符集的问题你问有几个人能几句话能讲明白的.
ASCII - 扩展ASCII 双字节字符集 Unicode 这些概念你都明白了,你再来问这个问题?这样别人不回答你也能明白个大概了.你随便问你学校教汇编的老师为什么中文DOS下很多线框会变成乱码?他回答的答案很能对你问的问题有启发.
2004-10-1 18:59
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我汗!我当然知道ASCII和Unicode的概念。不过这和我遇到的情况有什么关系?它就是乱码!这个软件里用的函数大多是A结尾的,比如MessageBoxA,没有用Unicode字符集。难道大家没有碰到过这种情况?难道所有中文软件在W32DASM中都可以正常显示字符串,除了我碰到的这一个?
2004-10-2 17:03
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10

+----------------------------------------------------+
+ 名称: Ultra String Reference +
+ 版本: v0.11 +
+ 作者: 罗聪 +
+ 日期: 2004-07-27(yyyy-mm-dd) +
+----------------------------------------------------+



[简介]
Ultra String Reference 是一个 OllyDbg 的插件(Plugin),OllyDbg的串式参考(String Reference)对中文的支持比较差,有感于此,我写了这个插件,支持对 GB2312 中文的串式参考,希望可以改善这种状况。


[系统需求]
OllyDbg 1.10,否则该插件不会被装载。


[安装]
把 ustrref.dll 拷贝至 OllyDbg 的 Plugin 目录下即可。


[使用方法]
第一步,用 OllyDbg 载入 PE 文件。
第二步,选择主菜单的“Plugins->Ultra String Reference”,或者右键单击并选择反汇编窗口中弹出的“Ultra String Reference”菜单,然后选择“Find ASCII”或者“Find UNICODE”。具体使用哪个请自行决定,一般来说 VB 的程序应该使用“Find UNICODE”,非 VB 的程序应该使用“Find ASCII”。


[原理]
通过对PE文件的代码段进行反汇编,找出以 push、mov、lea 开头的 3 种形式的代码。例如:
;--------------------
push [address]
;--------------------
或者
;----------------------------------------
mov [register], offset [address]
;----------------------------------------
我们知道,push 很可能是进行参数的压栈操作;mov offset 和 lea offset 则很可能是紧跟一个字符串的偏移地址。因此如果对程序进行反汇编,并进行一些相应的地址转换后,得到的就非常可能是字符串。根据多次尝试后,我最终采取的方法就是这样――对代码段进行反汇编,然后转换地址,再筛选掉没用的垃圾字符,从而找出有用的字符串。


[特点]
1、能正确找出中文字符串。
这点 OllyDbg 就无法做到,大部分的中文字符串都会被它漏掉。

2、与 OllyDbg 原有的 String Reference 功能兼容。
操作步骤和界面都是一样的,基本上不会造成使用上的困难。


[缺点]
1、有部分中文字符串不被支持。
为了尽可能地过滤垃圾字符串,目前仅支持双字节 2 区的 6763 个常用简体中文汉字(即 GB2312 标准的汉字),以及双字节 1 区和双字节 5 区的图形符号。然而对于大多数程序来说,这些常用字已经足够了。

2、会存在一定的垃圾字符串。
有部分垃圾字符串的组合编码会与 GB2312 简体中文汉字和图形符号的码位范围落在同一个区间内,这样就会导致识别错误。不过这是很难避免的,其实 W32Dasm 也存在同样的问题。




[联系方式]
姓名:罗聪
主页:http://www.luocong.com
邮件:admin@luocong.com


而且我说的是
1 ASCII -
2 扩展ASCII  
3 双字节字符集   
4 Unicode

你回答说你知道ASCII  和Unicode ,感觉你混淆了双字节字符集 和Unicode. 我要是没记错
双字节字符集在 IBM的文档里有介绍.你知道当初为了英文字母和中文在识别上有多少人做过努力吗(我指编码方案)?你对他们的方案一点并不清楚的前提下有疑问也不奇怪,你仔细看罗聪说的话里的我特意标的斜体部分,如果你有能力你就写你的识别算法去.请继续努力.
2004-10-2 19:33
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
首先谢谢楼上的写了那么多。不过我觉得我碰到的问题应该不至于这么复杂,可能是那些地方没弄好。我本来以为在这里像这样的可能很多人碰到,不过无所谓,自己慢慢搞定好了。
2004-10-5 09:58
0
雪    币: 1593
活跃值: (811)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
12
乱码是不可避免的,因为有些垃圾数据的值正好落在了0x80以上这个区间内,如果想尽可能地减少乱码,那么最好缩小字符串的取值判定区间。
2004-10-5 11:52
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
是这样吗?那么楼上的意思是,出现乱码是由于待破软件和W32DASM两者的问题。
2004-10-5 17:03
0
游客
登录 | 注册 方可回帖
返回
//