首页
社区
课程
招聘
[求助]请教如何增加文件里增加字节
2008-11-16 21:40 10525

[求助]请教如何增加文件里增加字节

2008-11-16 21:40
10525
请教一下,如何增加字节.
比如说........... 80 02 05 3e 2a  ....... 比如我要改变这几个字节 但是不止五个字节,现在我想在再增加五个节字,才可以改变这个字节的功能,请问一下大侠怎么改动.请详细的说明一下,本人是菜鸟.
再说明一下,这个文件不是执行文件.EXE里的利用跳转的我知道怎么搞.

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (38)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 21:52
2
0
忘记告诉啦,这个文件是没有事件的.也就是说只调用.
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 21:53
3
0
如果是数据文件你在中间插入内容也就是意味着之后的数据的地址全部都改变了,就算这个数值读取好了,剩下部分的读取也可能会出错,所以除了修改数据文件以外很可能还需要修改可执行文件,这个问题问得太莫名其妙
另外,不知道楼主怎么理解黑客这两个字,有时间不如学学开发做点有意义的事情
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 22:22
4
0
不是的,我只是想修改一下这个文件,达到我我的目的,我想说的就是这个,一修改下面的地址全变啦,现在我想要问的就是 有什么办法可以不改变这个地址,或者怎么增加字节.
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 22:30
5
0
通常访问数据文件只有相对文件头或文件尾两种相对地址。又不是在讨论一个诸如保存在PE头内的EXE的imagebase之类的绝对地址。只要你插入或删除了任意字节,在修改范围以外的相对地址就肯定会改变,所以这个问题毫无意义
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 22:34
6
0
我说啦,我这个文件不是EXE的文件,是一个游戏的文件来的,我只要修改这个文件的代码,比如说这个技能的代码我就达到修改的目的,但是那些游戏技能的代码有些会超出数据.比如说,他的数字为100.,我想修改成1000,但但是字节不够用.我想问的就是怎么修改
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
xiaofu 8 2008-11-16 22:38
7
0
100=64
1000=3E8
绝对会改动一个字节的
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 22:39
8
0
就是因为这个不是EXE文件,只是一个数据文件,所以你不能随意插入新的字节
否则在你改动之后的数据的相对地址全部都变了也就无法正确读取

因此你应该考虑的不是怎么向这个数据文件插入新字节,而是要去考虑这个文件的具体存放格式,分析数据结构后修改访问该文件的EXE或是条件允许的情况下根据你分析出的数据结构来修改这个数据文件
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 22:40
9
0
比如这个技能的施放的坐标为,X 100 y 100 我现在可以找到这个坐标地址.我想在本地改这个数字,达到修改的目的,但是100的字节是二个字节,但是1000却为4个字节,我想怎么改变这个字节,我想现在应该很明白我应该说什么了吧.这个不是执行文件来的,不是EXE文件来的
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 22:44
10
0
会的,100=64 1000=03 e8怎么可能不改变字节呢
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 22:47
11
0
分析过啦,我是对着数据结构来改的,现在我想搞大一数据,但是.....我听说是可以的,但是有些高手不肯说方法
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 22:47
12
0
对于诸如100改为1000之类的问题,通常游戏时不可能在支持16位或更高位计算时却只保存8位的,更可能的是保存最大位数的数据,未用到的位数全部置零,例如100可能保存为00 00 00 64或是64 00 00 00,而此时如果需要改为1000只须将相应的数据改为00 00 03 E8或是E8 03 00 00
此外还有一种可能是对于未知长度的数据字符串,为了避免不必要的浪费有可能是以类似delphi的方式保存,先保存8位,16位或是32位的字符串长度,然后再保存指定字符串,但这种情况就要非常小心,因为即便手工将字符串长度增加,但之后的数据相对地址也肯定会发生变化

所以你的问题最关键还是太急功近利,以这样的心态做事情多半会事倍功半
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 22:54
13
0
从一开始就知道你说的不是EXE,所以才再三强调数据文件是不能随便插入或删除字节的,不知道什么时候才能看懂这句话?

回过头来继续讨论你的问题。以网络游戏的设计思想来考虑,客户端保存的数据只是用来起显示用的,也就是说即便你修改了本地技能施放的坐标,这个数据服务器上也不会接受,实际计算是在服务器上完成的并且是根据服务器上的设置进行计算的,否则这样就可以随意作弊了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:03
14
0
我有点想不明白的就是.为什么,这个游戏的技能文件的某一个文件施放的坐标范围为X=-100 Y=-100时就为一个字节.而且是这样写的,80 64 ff ff ff 64 这个我怎么都看不出来是什么结构的.
还有他的X=-1000时Y=-1000时. X=80 18 fc ff ff  .............Y=80 18 fc ff f      
80这个只是代表这个技能的代码,所有的负数前面都加上80,后面的我可以看出来X轴跟Y轴坐标的施放范围.但是后面X=-100跟Y=-100的我就看不出来是怎么算的,请大侠分析一下.谢谢
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:09
15
0
负数,80是标志位, 18 FC FF FF = -3E8

9C FF FF FF = -64,就是你要的-100

如果是单机游戏你追一下或许还能有所收获,网络游戏建议还是算了吧,99.99%都是服务端上计算,即便你运气好遇到这个0.01%,这个BUG也一旦被发现肯定也会修复掉
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:11
16
0
这个游戏技能施放是在本地验证的,所以在本地可以改变的.可能是这个游戏为了减轻服务器的负担才在本地验证的.或者在游戏里可以找到这个指针吗?这个技能升十级,范围就会改变的.或者我在本地那里更改一下,能不能找到这个指针呢. 验证一下去游戏中验证一下.
谢谢mstwugui 的指点,我想现在对这个文件比较了解啦.
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:14
17
0
上面的我知道.但是Y轴呢,这只是X轴的,还有Y轴呢,9C FF FF FF 9c 前面的我懂.但是后面那个9C应该是Y轴的,那是怎么算呢.怎么没有80这个标志位的呢?
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:16
18
0
我不这么乐观,技能施放如果只是本地计算的话那绝对是最笨的设计了,但几乎所有的网游的客户端都会计算技能施放,这么做通常只是为了减少通讯数据量,这个本地的计算结果只是用与本地显示,而实际生效的计算只可能在服务端上完成
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:17
19
0
只有小大于双字节的就很正常,但是只有一个字节的就只出现 我这样的情况.我不是很明白这样的结构是什么结构.为什么会有这样的结构.9C FF FF FF=-100     但是80 9C FF FF FF 9c ......下面的是另一个技能的数据
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:18
20
0
9C后面肯定还有数据,00 00 00 或是 FF FF FF之类的

80只是个标志位,真正的坐标又不需要80阿,只是两个带符号的整数而已
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:20
21
0
对啦,这个游戏我可以告诉你,他是本地计算,但是在服务器那里有校验,重要数据会校验.还有我玩的是二D横轴游戏来的.不是三D游戏.可能跟你想像中的游戏不一样.这个二D游戏除了重要数据之外,都是在本地计算.这个游戏也很多变态外挂,就是因为有很多是本地验证的
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:22
22
0
如果真如你说的,那这个游戏设计的太业余了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初学黑客 2008-11-16 23:25
23
0
如果有这个的话,我就很容易就可以改啦,就是没有所以才来问一下的,如果有的话,我改坐标很容易就

可以达到目的.还有,9c 00是代表正数还是负数呀.我那个坐标是负数的,这个应该是9C FF FF FF吧.但是我没发现有这个值
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:31
24
0
我没有见过你说的游戏,所以抱歉很难弄清楚具体需要的数值
但你为什么不试一下?如果有效的话,改改试出正数或负数应该不是什么难事啊
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
mstwugui 6 2008-11-16 23:33
25
0
不说了,做外挂总归不是好事情,楼主自己研究一下也就是了,要玩游戏还是不要作弊的好
游客
登录 | 注册 方可回帖
返回