首页
社区
课程
招聘
[求助]一个不会编程的人向高手寻求帮助解答,谢谢了.
发表于: 2005-12-12 23:34 3732

[求助]一个不会编程的人向高手寻求帮助解答,谢谢了.

2005-12-12 23:34
3732
问题是这样的.

一个程序的exe文件.
程序大家7M左右,没有壳.
是C++写的.

由于程序内,对一些数据的类型进行了定义.比如定义为short.
这个值就最大只能32767.
当程序从数据库内读取这个值的时候,一旦读过来超过32767的话.在程序上显示就很小.无论数据库把值怎么改大,数值都小于32767.

我想更改exe内的数据类型.将它改为int 这样我想大小不会在读不了了.
但是根本没办法改.
问过会C++的朋友,说是用UE看的只是一些没有用的皮毛,真正的代码根本看不见的.

请问各位高手们,我的目的就是想这个值可以变大,不会被限制.
无论用更改exe,或者自己用程序去更换等等一切能实现的手段.方法有多少种,我应该怎么去实现呢.

我在这里谢谢大家了!

感谢每一位朋友的回答.

谢谢.

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是有可能实现的,因为在汇编中是没有数据数型的
2005-12-13 00:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有点麻烦,32767应该short(Smallint)类型吧,估计程序里定义了个与数据库对应的变量或结构体,很不巧那个字段用了short(Smallint)类型,要是取出的值在变量里赋来赋去,那么编译后可能很多地方都是变成了类似mov word ptr[xxx],?x或mov ?x,word ptr [xxx]这样的。
虽然扩值原理很简单,word->dword就可以了,但找相关代码、确定变量地址、挪代码(mov dword比mov word要多占字节啊,如果没法优化紧缩相临的代码,只有挪地方了 )==都要花不少功夫啊
另外,要是原程序真的用了个结构体来放的话,真不幸,说不定牵涉到整个结构体的地方都得修改(结构体大小变了,short扩成int,所有后边变量的地址全都需要往后挪,所以还是搬走整个结构体来的快)……晕

附:如果你是纯粹想用超过32767的值而已,而不需要用数据库设定值的话,还不如找到最终使用该值的地方,只需要然后word->dword/?x->e?x,再加个shl就够了
2005-12-13 04:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的朋友回答
2005-12-13 15:51
0
游客
登录 | 注册 方可回帖
返回
//