- UID
 - 66114
 
 注册时间2010-4-1
阅读权限30
最后登录1970-1-1
龙战于野 
  
 
 
 
TA的每日心情  | 慵懒 2019-3-12 17:25 | 
|---|
 
  签到天数: 3 天 [LV.2]偶尔看看I  
 | 
 
 本帖最后由 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; 
        } |   
 
 
 
 |