Nisy 发表于 2009-11-5 00:48:20

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;
}


2005ljb 发表于 2009-11-5 01:05:38

下载了玩玩,不知道远程注入跟HOOK有什么区别?

Nisy 发表于 2009-11-5 01:11:11

原帖由 2005ljb 于 2009-11-5 01:05 发表 https://www.chinapyg.com/images/common/back.gif
下载了玩玩,不知道远程注入跟HOOK有什么区别?


注入就是用自己让目标程序去执行我们传送给他的代码 比如加载我们的DLL文件 然后用DLL 去实现我们的功能

HOOK 就是从进程中找到目标程序后直接搞破坏

GGLHY 发表于 2009-11-5 13:55:09

呵呵,学习了。
顺便说下,N大的附件名字..../:017

kelvar 发表于 2009-11-13 11:34:01

原帖由 Nisy 于 2009-11-5 01:11 发表 https://www.chinapyg.com/images/common/back.gif



注入就是用自己让目标程序去执行我们传送给他的代码 比如加载我们的DLL文件 然后用DLL 去实现我们的功能

HOOK 就是从进程中找到目标程序后直接搞破坏

Hook从字面意思理解是“钩子的意思”,应该是找到需要钩挂的API之类的函数,从而做出相应的动作吧。
而注入的话应该是“Inject”,应该是直接将需要运行的代码插入到正常的程序流程中,从而实现一定的目的。过程上貌似有些区别

hflywolf 发表于 2009-11-13 11:38:13

原帖由 kelvar 于 2009-11-13 11:34 发表 https://www.chinapyg.com/images/common/back.gif


Hook从字面意思理解是“钩子的意思”,应该是找到需要钩挂的API之类的函数,从而做出相应的动作吧。
而注入的话应该是“Inject”,应该是直接将需要运行的代码插入到正常的程序流程中,从而实现一定的目的。过程 ...

太强大了,学习了!

sjh717142 发表于 2009-11-13 16:07:09

不用VirtualProtectEx应该也有读写权限

HDd1145 发表于 2009-11-13 16:25:30

页: [1]
查看完整版本: Image Mender 1.21 Loader 源码