Image Mender 1.21 Loader 源码
华军下载:http://www.onlinedown.net/soft/67318.htm给一段Loader的源码 Patch代码函数化了一下:
void CMyInJectDlg::OnLoader()
{
// TODO: Add your control notification handler code here
STARTUPINFO StartupInfo = {0};
StartupInfo.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION info ={0};
BOOL bcr = ::CreateProcess(_T("IM.exe"),NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,
NULL,NULL,&StartupInfo,&info);
if(!bcr)
{
AfxMessageBox(_T("程序加载出错,请将本程序与IM.exe放到同一目录!"));
}
LPVOID pLoaderAddr = (void *)0x0040AF29;
CHAR PatchOldData[] = {0x0};
CHAR PatchNewData[] = {0x1};
INT dSize = 1;
PatchProcess(info.hProcess,pLoaderAddr,dSize,PatchOldData,PatchNewData);
SetRegisterInfo();
::ResumeThread(info.hThread);
::CloseHandle(info.hProcess);
::CloseHandle(info.hThread);
}
BOOL PatchProcess(HANDLE handle,LPVOID PatchAddr,INT dSize,
CHAR * PatchOldData,CHAR * PatchNewData)
{
DWORD oldProtect = 0;
DWORD dDataSize = 0;
CHAR dReadData = {0};
INT dCount = 0;
::VirtualProtectEx(handle,PatchAddr,dSize,PAGE_EXECUTE_READWRITE,&oldProtect);
::ReadProcessMemory(handle,PatchAddr,&dReadData,dSize,&dDataSize);
if(StrCmp(dReadData,PatchOldData) != 0)
{
AfxMessageBox("数据修改失败,请检查程序版本是否正确。");
return FALSE;
}
::WriteProcessMemory(handle,PatchAddr,&PatchNewData,dSize,&dDataSize);
::VirtualProtectEx(handle,PatchAddr,dSize,oldProtect,&oldProtect);
return TRUE;
}
下载了玩玩,不知道远程注入跟HOOK有什么区别? 原帖由 2005ljb 于 2009-11-5 01:05 发表 https://www.chinapyg.com/images/common/back.gif
下载了玩玩,不知道远程注入跟HOOK有什么区别?
注入就是用自己让目标程序去执行我们传送给他的代码 比如加载我们的DLL文件 然后用DLL 去实现我们的功能
HOOK 就是从进程中找到目标程序后直接搞破坏 呵呵,学习了。
顺便说下,N大的附件名字..../:017 原帖由 Nisy 于 2009-11-5 01:11 发表 https://www.chinapyg.com/images/common/back.gif
注入就是用自己让目标程序去执行我们传送给他的代码 比如加载我们的DLL文件 然后用DLL 去实现我们的功能
HOOK 就是从进程中找到目标程序后直接搞破坏
Hook从字面意思理解是“钩子的意思”,应该是找到需要钩挂的API之类的函数,从而做出相应的动作吧。
而注入的话应该是“Inject”,应该是直接将需要运行的代码插入到正常的程序流程中,从而实现一定的目的。过程上貌似有些区别 原帖由 kelvar 于 2009-11-13 11:34 发表 https://www.chinapyg.com/images/common/back.gif
Hook从字面意思理解是“钩子的意思”,应该是找到需要钩挂的API之类的函数,从而做出相应的动作吧。
而注入的话应该是“Inject”,应该是直接将需要运行的代码插入到正常的程序流程中,从而实现一定的目的。过程 ...
太强大了,学习了! 不用VirtualProtectEx应该也有读写权限
页:
[1]