首页
社区
课程
招聘
怎样用 Winhex 替换exe中的图片??
发表于: 2015-7-12 12:26 19459

怎样用 Winhex 替换exe中的图片??

2015-7-12 12:26
19459
请问各位大侠,怎样用 Winhex 替换exe中的图片?? 烦请详细解答一下好不??我是小小白。。。拜托了! 谢谢!  

exe文件地址:http://pan.baidu.com/s/1hq1TCig

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (36)
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
reshacker
2015-7-12 12:39
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用reshacker 看不到图片资源。。。。
2015-7-12 12:40
0
雪    币: 5
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
帮顶,感觉不难吧
2015-7-12 15:19
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
应该不是很难,但不会替换操作。。。。提示一下下应该就会了。。。等待大神解答。。。
2015-7-12 15:44
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
????    没有大神来回答么???
2015-7-12 19:05
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
我说下我的一点思路,
首先你要确定这个图片是不是在资源文件中以bmp这种可识别的资源存在的,如果是的话,只要能获取资源的信息。。直接用windows api就可以替换掉。。当然你也可以以某种工具。。但是我没用到过。。

如果上面不成立,说明这个图片可能是其它方式,加密或者压缩的方式,然后内存中再加载的。当然这样就比较麻烦了。
2015-7-12 19:09
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
图片已经提取出来了,现在最重要的是怎样把修改好的图片写入EXE中替换。

提取出来的图片:
上传的附件:
2015-7-12 20:00
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
顶啊! 等待大神解答。。。
2015-7-13 07:56
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这程序长得就象delphi的吧,棒顶,球 delphi  source里边替换的案例。
2015-7-13 08:52
0
雪    币: 185
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vsc
11
有个工具比winhex方便
2015-7-13 08:54
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
什么工具??
2015-7-13 09:17
0
雪    币: 409
活跃值: (182)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
看看这个是不是有帮助
http://bbs.pediy.com/showthread.php?t=65998
2015-7-13 09:28
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
本人也是新手,碰巧解决了楼主的问题,特来回帖。

用WinHex搜索了下楼主的.exe,发现里面有
:/new/prefix1/resource/image/LOGO.png
这种字符串,确定图片是png格式的。
接着在.exe文件中搜索了一下PNG文件头,找到并导出了LOGO.png的内容(位于0x0051FCEC
~ 0x0052A997之间)。

修改LOGO.png后覆盖回原位置,达到修改图片内容的目的。

下面是结果截图:


相关文件已上传到百度云盘,供楼主参考:
http://pan.baidu.com/s/1kTH2iFX
2015-7-13 17:12
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这位朋友,谢谢你的解答。  能否讲解得再仔细一些呢?我是小小白,一点都不懂呢。。。。

“0x0051FCEC到0x0052A997”这些数值从哪里得来呢?怎样覆盖??

我现在最大的问题是不懂得怎样覆盖替换。怎样替换操作?? 如何在EXE文件中怎样找到图片的十六进制数值呢??  

能否讲解得再仔细一些呢?  烦请把步骤讲一下,    谢谢了!!
2015-7-13 17:42
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
1、如何在EXE文件中确定图片起始结束位置。
LOGO.png 所处的位置“0x0051FCEC ~ 0x0052A997”是我通过图片内容确定的...
虽然有点傻,但是对于单次任务还将就了(我第一次导出的结果就是logo.png)
开头和结尾是通过查找PNG文件头的 固定内容 确定的。
PNG文件头具体有哪些固定内容请查看:https://en.wikipedia.org/wiki/Portable_Network_Graphics

2、怎么覆盖替换。
这个是通过WinHex的Write ClipBoard (Ctrl + B)功能完成的:
首先将光标定位到0x0051FCEC;
然后按Ctrl + B将文件内容覆盖到以当前光标位置开始的区域。
2015-7-13 18:26
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
呵呵。。。明白了一点点,再研究研究。。。
2015-7-14 16:27
0
雪    币: 268
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
eXeScope v6.50  试试这个工具吧
2015-7-14 17:17
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这工具无法做得到。。。
2015-7-14 17:21
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
建议用PEDIY中的其它获取图标工具要进行替换
2015-7-19 14:20
0
雪    币: 857
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
不知道您是用什么工具提取出图片的?可以提取出来,不就可以写入吗?
2015-7-20 06:27
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
怎么提取的?
2015-7-21 09:41
0
雪    币: 204
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
用WINHEX十六进制搜索 89504E470D0A (这是PNG的文件头).
再搜索 89504E470D0A (这是PNG的文件尾).
你会看到搜索结果是成对出现的.这样就好办了.每一对都是一个PNG文件.我刚试了.第二对就是楼主的那个LOGO.
在WINHEX里面指定选块起始为文件头数据的地址.然后指定文件尾数据的地址为选块结束.然后编辑-复制选块-至新文件.然后保存这段数据块为*.png文件.至此这就是一个独立的PNG文件了.
其实要替换的话.也更简单了.用WINHEX打开你用来替换的图片.复制选块-正常-从被替换的那个文件的文件头位置-编辑-剪贴板数据-写入.这样就替换了.
不过替换之前先得对比一下两个文件的大小.如果被替换的图片比用来替换的图片大的话.就先用00来填充选块.然后再把要用来替换的数据块写入到文件头的地址.如果用来替换的图片比被替换的图片大的话.得先想办法把图片减少一下体积.不然写入以后会把后面不属于这个文件的数据块也替换了.

文件头:


文件尾:


替换后:
2015-7-26 21:23
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
mark
2015-7-26 22:25
0
雪    币: 195
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
试了一下,成功了!!  哈哈!  谢谢 YoungBai  的详细解答!!
2015-7-26 22:26
0
游客
登录 | 注册 方可回帖
返回
//