飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2378|回复: 0

浅谈脱壳中的Dump技术8

[复制链接]
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-5-26 21:41:45 | 显示全部楼层 |阅读模式
    本帖最后由 whypro 于 2010-5-27 17:35 编辑

    //这个函数的作用是获取SizeOfImage的数值
            //当函数执行失败返回的是0
            //成功返回的是非0
            HANDLE hModuleSnap = NULL;
            MODULEENTRY32 stModE  = {0};
            stModE.dwSize = sizeof(MODULEENTRY32);
            hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,IDProcess);  //快照,对本进程中所有的模块进行snap

            if (hModuleSnap == INVALID_HANDLE_VALUE)
            {
                    MessageBox(hDlg,TEXT("The Module snapshot can't get!"),TEXT("Error!"),MB_OK | MB_ICONSTOP);
                return FALSE;    //返回0
            }
            if (!Module32First(hModuleSnap, &stModE))
            {
               MessageBox(hDlg,TEXT("The Module32First can't work!"),TEXT("Error!"),MB_OK | MB_ICONSTOP);
               CloseHandle (hModuleSnap);
               return FALSE;
            }
            CloseHandle (hModuleSnap);
            return stModE.modBaseSize;//初始化为0
    }

    二.        对齐节表

    这个问题在上一节我们已经提出了,我们的程序不完善,现在要自动的实现RA=RVA ,RS=RVS这个功能。那么我们就使用一个函数来完成它吧!我定义了下面这个函数:
    BOOL ModifySectionFunc(HWND hDlg,LPCTSTR Dump_Name)
    {
            //此函数的将修改dump下来的exe,使其RA=RVA ,RS=RVS
            //首先是打开dump文件
            HANDLE hFile=CreateFile(Dump_Name,GENERIC_WRITE | GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
            if(hFile==INVALID_HANDLE_VALUE)
            {

                    MessageBox(hDlg,TEXT("I can open the dump file..."),TEXT("Error!!"),MB_OK | MB_ICONWARNING);
                    return FALSE;
            }
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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