64位进程地址空间的问题

时间:2022-10-05 16:56:12
拜托各位大神,希望能答复我下边几个疑问?
1, 64位程序的进程地址空间多大?
2,假设有一个64位程序在运行,我能通过注入的方式获取他的起始地址吗,就是像
unsigned long address=(unsigned long)main;
一样,我又如何获取他的结束地址?
3,该程序运行中的输入参数在他的地址空间里能找到吗?

其实总结就是,我想获取一个64位程序运行时输入的参数,用注入的办法在某一时刻把内存里的东西全都写到文件里可以吗?
谢谢各位大神。

7 个解决方案

#1


1.   2的64次方。非常大

#2


引用 1 楼 oyljerry 的回复:
1.   2的64次方。非常大
拜托,还有其他的呢

#3


大神何在?跪求大神。

#4


如果你已经注入他的进程,那么直接使用 API 函数,GetCommandLine 获取运行参数。
如果没有,获取进程的 NtCurrentPeb() 中的 ProcessParameters->CommandLine.

#5


1.考虑64位进程空间大小我觉得没什么意义。
2.只要你能注入,在自己进程内怎么搞都行。获取main函数参数方法4L已经给出,获取其他函数可以hook知道其起始地址,只要知道这个函数参数个数、大小,参数如果是类会繁琐一些。至于结束地址是指return?你起始地址改了完全可以自己去return,当然一般系统api不建议这么搞。
3与2同一个问题

#6


获取一个程序运行时输入的参数,微软有现成的命令行工具。

#7


非常感谢各位

#1


1.   2的64次方。非常大

#2


引用 1 楼 oyljerry 的回复:
1.   2的64次方。非常大
拜托,还有其他的呢

#3


大神何在?跪求大神。

#4


如果你已经注入他的进程,那么直接使用 API 函数,GetCommandLine 获取运行参数。
如果没有,获取进程的 NtCurrentPeb() 中的 ProcessParameters->CommandLine.

#5


1.考虑64位进程空间大小我觉得没什么意义。
2.只要你能注入,在自己进程内怎么搞都行。获取main函数参数方法4L已经给出,获取其他函数可以hook知道其起始地址,只要知道这个函数参数个数、大小,参数如果是类会繁琐一些。至于结束地址是指return?你起始地址改了完全可以自己去return,当然一般系统api不建议这么搞。
3与2同一个问题

#6


获取一个程序运行时输入的参数,微软有现成的命令行工具。

#7


非常感谢各位