首页
社区
课程
招聘
[旧帖] [求助]请问OD数据窗口中的一个问题! 0.00雪花
发表于: 2008-4-27 19:14 5396

[旧帖] [求助]请问OD数据窗口中的一个问题! 0.00雪花

2008-4-27 19:14
5396
在OD的数据窗口中,有些地址的数据,是可以“查看可执行文件”的。哪么要修改这些数据就非常方便。
但是有些数据是临时生成的,一旦生成就不再修改,后面程序就使用这些数据。我现在想修改这些数据,但在这些数据区中,只要是这些临时数据就不可以“查看可执行文件”,也就是说,在主程序中找不到修改这些数据的代码。
请问各位前辈,如何确定这些数据的代码段?如何确定这些数据来自那儿呢?

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我终于找到了,这个问题困扰我很多天了,是在没法子来求助各位啊。
实际上在前面主程序领空的程序代码中,已经提示了是一个DLL文件,我现在直接打开这个DLL文件就看见了,但不能用ASC2码查看,只能用UNICODE码查看才能看到。以前我也打开过这个DLL文件,但没有使用UNICODE码查看,晕了。在主程序运行的时候,直接调用的这个DLL,得到的这些数据。
现在我准备修改这个DLL文件,这样才能修改程序运行后的一些参数。
2008-4-27 20:47
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
3
楼主都懂得说是“临时的数据”。临时的数据,比如局部变量,或者使用到的缓冲区,在哪里?堆栈中,或程序新申请的内存空间中。堆栈和新申请的内存缓冲区,进程自身可执行模块中根本就没有所对应的段落,根本就是进程运行时创建的,当数据窗口显示的是这些空间中的数据的时候,当然就不能“查看可执行文件”啦。如果你想修改这部分数据,要不就修改生成数据的代码,使之生成不同的数据,要不然就必须用内存补丁而不是文件补丁。

而针对楼主贴出来的图,MapViewOfFileEx,是把文件映像入内存进行操作,这部分程序对于进程来说,也就相当于新申请的内存空间(当然,这是磁盘文件映像进来的,但是跟进程空间中的可执行模块如dll等不一样,后者就可以“查看可执行文件”)。如果想知道映像文件对应磁盘的哪个文件,应该查看句柄表(“查看”-“句柄”),调用MapViewOfFileEx前push的最后一个参数,就是文件映像句柄,从句柄表中找到这个句柄对应的对象名。注意,这些映像文件通常也是程序运行时创建的(用于多线程共享数据等目的),所以,多数还是要在程序运行中修改,即内存补丁,而非文件补丁。
2008-4-27 21:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢轩辕小聪,你说的这些非常好,谢谢你
2008-4-27 21:41
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
5
又看了2楼的,吓我一跳。这两个dll是kernel32.dll和ntdll.dll,可以看出是win2000系统下,这两个是系统关键的dll,不能直接修改!而且这两个dll只是完成API函数的功能,实际上不是影响你的数据的关键,生成的数据内容是什么样的,是程序指定的,而不是系统dll指定的……

还是那句话,如果真是要修改临时生成的数据,内存补丁吧,不要文件补丁……
2008-4-27 22:11
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢,我修改的文件,不是这两个DLL,这两个DLL是不能修改的。呵呵是另外一个我安装文件夹内的DLL。我一直使用的2000系统,用习惯了,主要是机子配置不高,2000下运行特别的快,XP就慢多啦。
谢谢轩辕小聪,呵呵主要是自己的能力的确还不过关,很多DLL都不太了解。看样子得继续继续努力呀
另外OD很多插件也没搞懂,一知半解的,真的是愧对各位大侠
2008-4-27 23:33
0
游客
登录 | 注册 方可回帖
返回
//