首页
社区
课程
招聘
[求助]悲催的delphi xe3 中文变量定义中的一个BUG
发表于: 2013-6-2 09:46 17991

[求助]悲催的delphi xe3 中文变量定义中的一个BUG

2013-6-2 09:46
17991
平素比较喜欢delphi 7写点小程序
因为需要 重新把以前的代码翻了翻 发现自己看不懂了
于是准备把代码从d7移植到delphi xe3下
不移植不知道
一移植就发现 原来delphi xe3 还是有一个很大的问题的
这个问题是这样的
读写内存的时候 会读不到地址
在编译器 编译的时候能准确读到
但是 一编译成exe就无法读到
而且很郁闷的是
我自己花了一天时间研究了下
发现定义的常量变量不是很多的时候是没关系的
一旦你的程序定义的数组什么的比较多的时候 就出现这个问题
具体的BUG原因我实在是没那么多耐心跟精力虚耗,不过为了能够方便
delphi xe的后来人
我还是求助下 顺便把这个古怪的问题 提出来
有那份心的可以去研究下
具体不知道是我下的xe版本有问题 还是这个delphi xe编译器的问题
下面是附件,密码是kanxue
有兴趣的可以研究下。
非常希望大牛可以出来 弄清楚这个问题

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (44)
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
现在都 delphi xe4了,你可是试下 xe4 有没有这个问题.
2013-6-2 10:16
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
应该是编译器问题,代码都发你,你帮忙看下 你那里可不可以读取地址。
程序名和基地址你可以随意的
主要是 调试状态下时读的数据跟编译出来的exe是不一样的
2013-6-2 10:31
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
去掉中文变量试过么?
2013-6-2 11:04
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
这也是很多老牛们,始终使用VC6.0的原因吧,彻底的熟悉一个编译器(我说的是一个编译器某一指定的版本),是需要时间的,因为这些IDE和编译器的BUG,浪费时间,实在是让人冒火哦,现在我让6.0,2003,2005,2008全部使用VS2010的编译器,SDK,WDK用windows 7的,在没有编译器版本差别的烦恼啦,用2010导入框架,用2008编辑调试,版本高,速度快,占内存还小,还不用启动巨无霸VS2010,哈
2013-6-2 11:16
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
尝试过 依然如此。。
查阅所有资料,没找到原因
感觉应该是变量什么的缘故
2013-6-2 11:30
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
7
编译器的BUG是最让人讨厌的。还有编译器有些功能无法实现也是最让人抓狂的
2013-6-2 11:59
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
你用这个基址在DELPHI7上测试下看看是不是基址的问题..如果DELPHI7正常的话.就是XE3的BUG了
2013-6-2 12:01
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
9
当然是正常的,否则也不会说是BUG了,而且调试状态也是正常的,就是编译出来的就不正常了,到底什么原因呢?
2013-6-2 12:25
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
10
这个是附件截图
原因不明啊。期待牛人解读。
上传的附件:
2013-6-2 12:35
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
换回XE2  XE 2010什么的试试吧....
2013-6-2 12:42
0
雪    币: 206
活跃值: (86)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
12
XE2用着挺好
2013-6-2 13:08
0
雪    币: 535
活跃值: (115)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13


你确定各个API都执行OK么
比如 被打开游戏进程 根本没做判断
2013-6-2 14:20
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
14
确定执行OK啊。权限足够的
xp系统又不是win7
还有这个程序 你稍微修改下 找个计算器 或者记事本都可以的。
只要能读地址就OK
电脑本身系统干净的
如果要做判断你稍微修改下代码就OK 就是看打开进程是否成功。
我原先的老程序有自己带提升进程权限的照样不可以
还有就是如果你把那些 结构体定义什么的删除了 貌似就可以
你自己做下实验
程序本身没什么问题 出问题的就是xe本身的一些问题吧
期待大牛关注
2013-6-2 14:53
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
15
找出问题 然后写个专题 估计能混个精华或者关注什么的
期待。。。
2013-6-2 14:54
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
16
这个也太代价了吧。而且如果是编译器的设计问题的话,错误估计还是一样的 这个代码在XE2 和2010下应该没什么大问题吧。你用这两个打开看看。
我这里安装的太多了 D7和 XE盘只有 c d e互相干扰就麻烦了。
2013-6-2 14:57
0
雪    币: 19
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
用蛋疼的lazarus编译ce。
2013-6-2 15:24
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
18
看来没什么人关注了。。
2013-6-2 15:56
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
19
没人关注了。。。
2013-6-3 08:59
0
雪    币: 264
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
你这是个挂呀——想帮你试一下,没有装这游戏。
2013-6-3 14:13
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
21
只是个读写内存的东西。。
我测试了 xe2还是有这个BUG
2013-6-3 14:24
0
雪    币: 238
活跃值: (375)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我碰到过...

具体现象是.在WINDOW 8上使用创建的管理员帐号运行 读取不到任何信息.(当然用IDE运行是OK的.)

换成administrator 却正常.

记得好像是 OpenProcess 还是 DuplicateHandle 返回了错误..记不清了

但是同样的程序.换到WIN7系统.任何帐号都是OK的...反正很神奇
2013-6-3 23:18
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
23
这个问题我遇到过了 也解决了,你的意思是要提升权限么?
但是我有一个程序提升权限了 依然一样
而且是XP下的
win7的下话因为获得OpenProcess最大权限是比较麻烦的 所以可以申请一个句柄复制权限
然后通过DuplicateHandle 复制句柄把一个小权限的弄到最大权限 这样就可以用那个权限来读写了
我跟踪了下 这个问题不存在的
XP下 本身是提权方便的
还有如果把那些 自定义的数组什么的清理干净了 就又可以打开了。。
这个调戏人啊
2013-6-4 10:11
0
雪    币: 6092
活跃值: (699)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
24
随便找计算器测试挖,本来就是做例子说明问题的
2013-6-4 10:13
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
看不懂,这是pascal语言么,全部用中文变量名
2013-6-4 19:04
0
游客
登录 | 注册 方可回帖
返回
//