读书人

双击exe时系统调用CreateProcess用的参

发布时间: 2013-07-04 11:45:51 作者: rapoo

双击exe时系统调用CreateProcess用的参数是什么?

这是手工双击exe启动的:
双击exe时系统调用CreateProcess用的参数是什么?该怎么解决
手工启动的不需要做任何事,软件就会开始连接,但是用代码启动的不会。到底在调用CreateProcess函数时还要穿什么参数进去才能让他开始连接。

我觉得应该从一般在收到什么消息之后开始尝试连接着手,是不是我还缺少什么代码,所以缺少这个消息以至于不再连接??

其实主要的是,双击exe启动程序的时候操作系统是传递了什么参数给CreateProcess函数的?应该用系统传的参数就能解决问题了

你对比看看能有什么发现不,
最好还是直接调试你的 P2PSeacher.exe 程序
[解决办法]
我不是用的 VC, 是 OllDbg
你用 VC 试一下也可以.

Attach 系统的 explorer.exe 进程, 对 CreateProcessA 和 CreateProcessW 下断点.
然后去双击执行一个 exe 文件就会断下来,
然后就可以看堆栈上的参数了.


[解决办法]
打开菜单 文件->附加
然后选择 explorer 进程. 打开以后如果已经是断下来的, 按 F9 运行.
在下面的命令窗口中输入:
bp CreateProcessA
bp CreateProcessW
然后去双击打开一个 exe 程序. od 这边会断下来, 在堆栈窗口就可以看到函数的参数了.
[解决办法]
就都 sizeof 看到是 4 了, 当然就对应 4 个字节呀, 怎么又说成是 8 个.
根据你上面的数据:
DWORD cb = 0x44;
LPTSTR lpReserved = NULL;
LPTSTR lpDesktop = NULL;
LPTSTR lpTitle = NULL;
DWORD dwX = 0;
DWORD dwY = 0;
DWORD dwXSize = 0;
DWORD dwYSize = 0;
DWORD dwXCountChars = 0;
DWORD dwYCountChars = 0;
DWORD dwFillAttribute = 0;
DWORD dwFlags = 0x0401;
WORD wShowWindow = 0x01;
WORD cbReserved2 = 0x00;
....

读书人网 >C++

热点推荐