免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16605 | 回复: 80
打印 上一主题 下一主题

金山游侠的制作原理(C/C++ User in)!!!  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-24 14:56 |只看该作者 |倒序浏览
金山游侠的制作原理(C/C++ User in)

我打开金山游侠
找到了我要修改的数据
地址为0x0000D3A6

重新启动一下,这个数据的内存地址
还是没变也是0x0000D3A6

然后我进入Turboc2
#include <stdio.h>;
void main()
{
        int *p;
        p=0x0000D3A6;
        *p=100;
        printf("%d\n",*p);
}

有一个警告,运行出来是100
可是游戏中的数据没有改变
但用金山游侠却可以改变
请教是怎么回事?

指针如何直接指向一个内存地址?
请教高手,先谢了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-08-24 15:02 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

^_^,在完全不同的虚拟地址空间中,完全不是一回事。指针不是这样用的。呵呵,多学习学习吧。有好多东西要学呢。不过你的这个想法绝对值得表扬。鼓励!

论坛徽章:
0
3 [报告]
发表于 2004-08-24 15:04 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

原帖由 "Cplusultra" 发表:
金山游侠的制作原理(C/C++ User in)

我打开金山游侠
找到了我要修改的数据
地址为0x0000D3A6

重新启动一下,这个数据的内存地址
还是没变也是0x0000D3A6

然后我进入Turboc2
#include <stdio.h>;
..........

之所以你的指针不能成功指向想到的地方,是由于你的程序和游戏所用的地址空间是相互独立的。不知道你是不是了解80286的保护模式下的程序设计。嗯……简单说来,就是说,每个应用程序可以拥有4G的内存空间(当然,物理内存不会有4G的~不足的用磁盘空间,这就是我们所说的虚拟内存,也不是说每个程序一旦执行,就得给它找出4G的地方,而是说它需要就给它,直到4G分配完。一般情况下,这个4G的空间中,操作系统会拿走一些用,比如windows吧,它就是要占用其中的2G)。这样的话,A程序中的内存地址为k 的地方在B程序中可不是一个地方(也就是说,不是存在一个物理区域中)。至于说如何把这些虚拟地址转化为物理地址……你自己看书吧……我这可说不清了~

论坛徽章:
0
4 [报告]
发表于 2004-08-24 15:10 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

如果是windows下修改内存,可以先attach进程的内存空间,然后在进行修改。

论坛徽章:
0
5 [报告]
发表于 2004-08-24 15:27 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

默难      
圣骑士

晕~我的硬盘才2Gb
怎么一个程序需要4G?就算是虚拟内存
我现在的2G硬盘才快装满了

你吹的太历害了吧?

还有,我指针失败,如果我会用汇编语言的吧
会不会对我有所帮助?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-08-24 15:37 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

呵呵,不是吹,CU是很沉稳的地方,吹牛的人很少。
进程的地址空间就是这么一回事,所以我说你要学的东西还很多。
win下的程序的确是有4G的内存空间,的确是那样2G、2G分的。呵呵。有那么大的内存空间不见得用那么大的内存啊,可以换着用啊。这就是操作系统的调度了。

指针和汇编其实是一回是,C不是也要编译成机器码的吗?呵呵,关键是理解进程空间和实际内存空间的概念上的差别。

现在学校里教的都是实模式下的编程,呵呵,和现实有很大差距,要自己努力学习哦。

另外,默难给你码了那么多字讲解。人家是很帮你的。你不明白,还说人吹牛,很不礼貌的,希望可以谦虚一点。

最后,希望可以常来CU,对你的学习生活一定会有所帮助的。

论坛徽章:
0
7 [报告]
发表于 2004-08-24 16:13 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

原帖由 "aero" 发表:
呵呵,不是吹,CU是很沉稳的地方,吹牛的人很少。
进程的地址空间就是这么一回事,所以我说你要学的东西还很多。
win下的程序的确是有4G的内存空间,的确是那样2G、2G分的。呵呵。有那么大的内存空间不见得用那么?.........


荣誉会员呀呵呵

论坛徽章:
0
8 [报告]
发表于 2004-08-24 16:15 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

怎么学习?C语言我全学完了
考试也很稳的
就不知道你所说的努力学习
应该向什么方向学习?

另外,C跟汇编一样的,都译成机器码
但是,我想要功能
C语言能帮我实现么?

论坛徽章:
0
9 [报告]
发表于 2004-08-24 16:19 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

要弄明白你的这个问题去把组成原理和操作系统原理看看自然就明白了

另外,中国的考试纸面上的成绩多少算不了什么,尤其是计算机这样重实践的课程

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-08-24 16:21 |只看该作者

金山游侠的制作原理(C/C++ User in)!!!

呵呵, C语言完全学会了?
那好,我就和你叫一下针,随便打一个程序,你来说结果是什么。这是JohnBull老大出过的一个测试题:

#include <stdio.h>;
#include <stdlib.h>;

int main(void) {
  printf("hello";
  fork();
  printf("\n";
  exit(0);
}

就问你,这个hello打印几回?为什么?

C语言,呵呵,不好意思的说,如果你现在还在用TC,而说自己C语言怎么怎么样,没有人会相信的。

你可以和我mail联系,可以给你几篇教授怎么学习的文章看看。

考试,学校出的考试题能考出水平吗?就是计算机二级,在笔试C语言中,这里很多高手也是要挂的,那能叫考试?小弟弟,别相信考试。

总之,用曾经激励过我的一句话来结尾吧。UNIX和C是值得你用一生去追求的技术。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP