返回   cpper编程论坛 > Zion/测试
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

Zion/测试 惹人烦的东西这边来

回复
 
LinkBack 主题工具 显示模式
  #1 (permalink)  
旧 2005-05-16
初级会员
 
注册日期: 2005-05-10
帖子: 12
ngaut 正向着好的方向发展
默认 为什么下面的代码会导致计算器非法操作呢?

//我们使用函数的形式。即我们将自己程序中的一个函数植入到远程进程中。

#include <stdio.h>
#include <windows.h>
#include <process.h>


static DWORD WINAPI MyFunc (LPVOID pData)
{
return *(DWORD*)pData;
}

static void AfterMyFunc (void)
{

}

int main()
{

HWND hStart = ::FindWindow (TEXT("SciCalc"),NULL);

DWORD PID, TID;
TID = ::GetWindowThreadProcessId (hStart, &PID);

HANDLE hProcess;
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID);

char szBuffer[10];

*(DWORD*)szBuffer=1000;//for test

void *pDataRemote =(char*) VirtualAllocEx( hProcess, 0, sizeof(szBuffer), MEM_COMMIT,

PAGE_READWRITE );

::WriteProcessMemory( hProcess, pDataRemote, szBuffer, sizeof(szBuffer), NULL);

DWORD cbCodeSize=((LPBYTE) AfterMyFunc - (LPBYTE) MyFunc);
PDWORD pCodeRemote = (PDWORD) VirtualAllocEx( hProcess, 0, cbCodeSize, MEM_COMMIT,

PAGE_EXECUTE_READWRITE );

::WriteProcessMemory( hProcess, pCodeRemote, &MyFunc, cbCodeSize, NULL);


HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE) pCodeRemote,
pDataRemote, 0 , NULL);
DWORD h;
if (hThread)
{
::WaitForSingleObject( hThread, INFINITE );
::GetExitCodeThread( hThread, &h );
printf("run and return %d\n", h);
::CloseHandle( hThread );
}

//释放空间
::VirtualFreeEx( hProcess, pCodeRemote,
cbCodeSize,MEM_RELEASE );

::VirtualFreeEx( hProcess, pDataRemote,
sizeof(szBuffer),MEM_RELEASE );

//关闭进程句柄
::CloseHandle( hProcess );

return 0;
}
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #2 (permalink)  
旧 2005-05-16
Elminster 的头像
超级版主
 
注册日期: 2002-09-09
帖子: 1,764
Elminster 正向着好的方向发展
默认

你自己的思考过程呢?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
回复

书签
主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9。现在的时间是 06:40 AM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2009,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0