拜托各位大神,希望能答复我下边几个疑问?
1, 64位程序的进程地址空间多大?
2,假设有一个64位程序在运行,我能通过注入的方式获取他的起始地址吗,就是像
unsigned long address=(unsigned long)main;一样,我又如何获取他的结束地址?
3,该程序运行中的输入参数在他的地址空间里能找到吗?
其实总结就是,我想获取一个64位程序运行时输入的参数,用注入的办法在某一时刻把内存里的东西全都写到文件里可以吗?
谢谢各位大神。
------解决思路----------------------
1. 2的64次方。非常大
------解决思路----------------------
如果你已经注入他的进程,那么直接使用 API 函数,GetCommandLine 获取运行参数。
如果没有,获取进程的 NtCurrentPeb() 中的 ProcessParameters->CommandLine.
------解决思路----------------------
1.考虑64位进程空间大小我觉得没什么意义。
2.只要你能注入,在自己进程内怎么搞都行。获取main函数参数方法4L已经给出,获取其他函数可以hook知道其起始地址,只要知道这个函数参数个数、大小,参数如果是类会繁琐一些。至于结束地址是指return?你起始地址改了完全可以自己去return,当然一般系统api不建议这么搞。
3与2同一个问题
------解决思路----------------------
获取一个程序运行时输入的参数,微软有现成的命令行工具。