如何修改烧录文件中字符串

[复制链接]
3389|18
 楼主| kongjw 发表于 2012-3-22 15:44 | 显示全部楼层 |阅读模式
公司上个世纪九十年代开发的一个老产品,现在客户要求修改单片机程序中的一个字符串,对应的源程序找不到了,只有烧录程序,请问有办法定位字符串,然后替换掉吗? 字符串是中文的。
xwj 发表于 2012-3-22 16:41 | 显示全部楼层
盗版别人的?
yewuyi 发表于 2012-3-22 16:45 | 显示全部楼层
在HEX或者BIN文件中搜索到那一串字符串,然后手工改成其他字符串对应的编码值。
 楼主| kongjw 发表于 2012-3-22 17:17 | 显示全部楼层
2楼:
盗版别人的?

是不是盗版别人的我不知道,那个时候我还在上中学。

3楼:
在HEX或者BIN文件中搜索到那一串字符串,然后手工改成其他字符串对应的编码值。

用一般的工具打开HEX文件,看到的都是16进制代码,就算看到ASCII码,也看不到中文,如何搜索呢?
lyjian 发表于 2012-3-22 18:49 | 显示全部楼层
用UltraEdit太简单了
yewuyi 发表于 2012-3-22 19:21 | 显示全部楼层
2楼:
盗版别人的?

是不是盗版别人的我不知道,那个时候我还在上中学。

3楼:
在HEX或者BIN文件中搜索到那一串字符串,然后手工改成其他字符串对应的编码值。

用一般的工具打开HEX文件,看到的都是16进制代码, ...
kongjw 发表于 2012-3-22 17:17


你难道不会手工转换成ASCII码吗?你总不是想到里面直接搜索到中文字符把。。。:L
 楼主| kongjw 发表于 2012-3-23 09:57 | 显示全部楼层
5# lyjian
以前从没研究过格式转换和HEX文件的内部格式,请问5楼能说的再详细点吗?
lyjian 发表于 2012-3-23 12:38 | 显示全部楼层
还有一个简单的方法:
直接用烧录器(如ALL11之类)装入烧录文件,然后转到EDIT模式下修改字符。
lyjian 发表于 2012-3-23 12:40 | 显示全部楼层
5# lyjian
以前从没研究过格式转换和HEX文件的内部格式,请问5楼能说的再详细点吗?
kongjw 发表于 2012-3-23 09:57

烧录文件是BIN格式还是HEX格式?
BIN格式直接用Ultraedit编辑器的BIN模式修改即可
或者如楼上说的方法做
 楼主| kongjw 发表于 2012-3-26 10:27 | 显示全部楼层
文件是HEX格式的,
实际上没有以上各位说的那么简单,我做了一个实验:
我写了一个单片机程序,在代码段定义了英文字符串和中文字符串,用UE打开,英文字符串可以完整看到,并且可以修改,但是中文字符不一定能完整看到,其中涉及到对齐的问题,每行中文字符串第一个汉字对齐了,后面都可以看到,没对齐就是乱码。汉字是以国标码存在HEX文件中。
yewuyi 发表于 2012-3-26 10:56 | 显示全部楼层
本帖最后由 yewuyi 于 2012-3-26 11:19 编辑

闷倒。

你直接把原来显示的汉字用ASCII码列出来,然后在HEX中查哪些位置出现了这些ASCII码,然后向里面另外写一个汉字的ASCII码,然后烧片看结果,如果不对,再换另一个位置替换,多试几次就差不多可以找到了。
jiang390625 发表于 2012-3-26 11:12 | 显示全部楼层
进来学习下,:lol
 楼主| kongjw 发表于 2012-3-26 11:27 | 显示全部楼层
11楼的方法,我肯定试过了,
在keil编译的HEX文件中,这种方法确实可行,但是我那个项目是摩托罗拉的芯片,用这种方法查找不到。
jjjyufan 发表于 2012-3-26 11:47 | 显示全部楼层
翻箱倒柜找源文件。
我觉得每个电工,对于自己的产品,资料都是保存的很好的,
只不过是否是“有人原意帮你去找”
或者你把HEX文件发上来,说明要修改什么,大家帮你改,改了后,你烧录测试。
坛子里大牛很多,会有人知道的。
yewuyi 发表于 2012-3-26 12:00 | 显示全部楼层
11楼的方法,我肯定试过了,
在keil编译的HEX文件中,这种方法确实可行,但是我那个项目是摩托罗拉的芯片,用这种方法查找不到。
kongjw 发表于 2012-3-26 11:27


MOTO的编译器生成的S19格式,网络上有转化成HEX的软件,你转换一下再搞。
 楼主| kongjw 发表于 2012-3-28 11:39 | 显示全部楼层
本帖最后由 kongjw 于 2012-3-28 17:44 编辑

我已经将烧录文件转换成BIN格式,而且已经找到需要修改的中文字符串的位置,在这个程序中,自己做了中文点阵字库和ASCII码字库,我直接在BIN文件中修改了这个字符串的二进制代码,但是实际运行显示却不是我想要的汉字,而是其他汉字,而且看不出关联。
 楼主| kongjw 发表于 2012-3-28 14:11 | 显示全部楼层
奇怪的是,我把一个字符串中的所有汉字都修改成同一个代码,实际运行显示出来却不是同一个字。
yanghh159 发表于 2013-2-22 13:53 | 显示全部楼层
lyjian 发表于 2012-3-23 12:40
烧录文件是BIN格式还是HEX格式?
BIN格式直接用Ultraedit编辑器的BIN模式修改即可
或者如楼上说的方法做 ...

大神,我现在就有一个bin的文件,是PIC单片机里面的,我要定位的汉字没法搜索到,用的就是UE,但是搜我需要的汉字没法搜索到,运行显示出来是存在这个汉字的,我没法定位这个汉字就没法改,求大神指点......
delin17 发表于 2013-2-22 13:59 | 显示全部楼层
你要看汉字是什么码存的。不能接直接搜汉字,搜他的编码啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:QQ:4719188

7

主题

75

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部