标题:问一个Win32转Win64的问题
只看楼主
acone
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-8-25
结帖率:20%
已结贴  问题点数:10 回复次数:3 
问一个Win32转Win64的问题
我前两年用IDA Pro反编译了一个软件,用来在自己的程序里读取那个软件的数据(数据采用了他们私有的压缩算法),并且重新编译成功,当时是在WIN32环境下。现在想把它再编译成64位的,却出现了一个重要的问题,就是把地址型变量强制转换成其他变量的问题,例如IDA反编译的语句中有很多这样的语句:int v14 = (int)&v7[v12 + 171];这一句是把地址变成整形,在32位环境下,int和地址都是32位的,因此强制转换没有发生差错,但是在64位环境下,地址是64位的,int型仍是32位的,强制转换时就出错了。问一下有什么好的办法可以解决这个问题吗?
搜索更多相关主题的帖子: 软件 
2017-01-12 09:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
地址值最好用 unsigned long,全包了。
2017-01-12 10:37
acone
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-8-25
得分:0 
谢版主了,问题是这是IDA自己生成的代码,另外还有一个数组,里面存储的是地址。有什么好的办法能够顺利转到64位吗?
2017-01-12 11:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
IDA Pro 反编译的代码你就直接用了,没根据其代码整理一下?
如果这样的话,你只能找 IDA Pro 的作者了,我们改不了 IDA Pro。

BTW:根据C标准,除了指针外,只有 intptr_t 和 uintptr_t 可以无损的保存地址信息。
2017-01-12 12:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-473527-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.991634 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved