飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3414|回复: 7

[原创] Image Mender 1.21 Loader 源码

[复制链接]

该用户从未签到

发表于 2009-11-5 00:48:20 | 显示全部楼层 |阅读模式
华军下载: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[20] = {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;
}


x.jpg

Fuck.rar

19.11 KB, 下载次数: 17, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-2-2 10:20
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2009-11-5 01:05:38 | 显示全部楼层
    下载了玩玩,不知道远程注入跟HOOK有什么区别?
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2009-11-5 01:11:11 | 显示全部楼层
    原帖由 2005ljb 于 2009-11-5 01:05 发表
    下载了玩玩,不知道远程注入跟HOOK有什么区别?



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

    HOOK 就是从进程中找到目标程序后直接搞破坏
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2009-11-5 13:55:09 | 显示全部楼层
    呵呵,学习了。
    顺便说下,N大的附件名字..../:017
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-11-13 11:34:01 | 显示全部楼层
    原帖由 Nisy 于 2009-11-5 01:11 发表



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

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


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

    该用户从未签到

    发表于 2009-11-13 11:38:13 | 显示全部楼层
    原帖由 kelvar 于 2009-11-13 11:34 发表


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


    太强大了,学习了!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-11-13 16:07:09 | 显示全部楼层
    不用VirtualProtectEx应该也有读写权限
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-11-13 16:25:30 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表