freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

使用vc自己動手編寫加殼程序(參考版)

2025-07-10 12:45本頁面
  

【正文】 }在殼代碼段開頭添加跳轉(zhuǎn)到OEP的代碼。pOptionalHeaderAddressOfEntryPoint=。//文件鏡像增加修改程序OEP,只需要在EidtHeader函數(shù)中增加功能即可,在函數(shù)最后面添加修改OEP代碼,如下所示。我們知道在VC中編寫的函數(shù),經(jīng)編譯器編譯后就變成了二進制機器代碼,CPU執(zhí)行的就是機器碼。一是修改OEP為殼代碼段的運行地址。本次內(nèi)容將詳細講解使用VC程序添加MessageBox對話框。運行加殼后的記事本程序,也成功?。?)在殼代碼中添加MessageBox并運行上次內(nèi)容是在文件中新添加了一個區(qū)段,本次內(nèi)容將修改添加區(qū)段后的文件OEP,使程序從新區(qū)段先運行,然后再跳到正常的程序運行。加殼前后的區(qū)段表對比圖最開始已經(jīng)放出來了。以下是用hex_workshop打開的添加區(qū)段后的文件,在最后一個區(qū)段的位置時的數(shù)據(jù)圖。文件鏡像大小有0000DC00變成了0000F000。下圖是添加區(qū)段后兩個記事本程序的PE文件頭對比圖。VirtualFree(lpVirtualShell,0,MEM_DECOMMIT|MEM_RELEASE)。//釋放分配的虛擬內(nèi)存}修改MemAllocFree函數(shù),增加對殼內(nèi)存釋放功能。(文件加殼完成!\r\n)。//文件寫入完畢后,釋放內(nèi)存CloseHandle(hFile)。}return。if (!MakePacking(hFile))//修改PE文件頭MakeShell(hFile)。////////第五次增加////////////////////////////////////////////////MessageBox(創(chuàng)建加殼后文件失??!,錯誤提示!,MB_OK)。{//創(chuàng)建加殼后的文件句柄CloseHandle(hFile)。m_FilePathNamePacked=(()4)+。//如果要嚴格做,需要獲取文件路徑,擴展名等等。//設(shè)定加殼后的文件名,我采取了一個偷懶的簡單方法。MessageBox(文件加載到內(nèi)存失??!,錯誤提示!,MB_OK)。if (!MemAlloc(hFile))//////////第四次內(nèi)容。}return。(錯誤提示:文件不是PE格式!\r\n)。{//判斷文件格式}return。if (hFile==INVALID_HANDLE_VALUE)//如果文件打開失敗,就彈出對話框,并返回。OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)。hFile=CreateFile(m_FilePathName,GENERIC_READ,FILE_SHARE_READ,NULL,//文件句柄HANDLE hFile。void CPEPackerDlg::OnButtonPacking()}修改OnButtonPacking函數(shù),增加函數(shù)調(diào)用。}return FALSE。{if (!WriteFile(hFile,lpVirtualShell,(pSectionHeader+dwNumOfSection1)SizeOfRawData,amp。}return FALSE。{if (!WriteFile(hFile,lpVirtualtAlloc,SizeOfImage,amp。//區(qū)段的個數(shù)dwNumOfSection。//實際讀取字節(jié)大小MakePacking函數(shù)功能是將各個內(nèi)存數(shù)據(jù)輸出,合并為加殼后的文件。//文件鏡像增加pNtHeader++。//區(qū)段表個數(shù)加1。SectionHeaderOfShell,sizeof(SectionHeaderOfShell))。//將殼區(qū)段信息拷貝到文件頭中l(wèi)pShellSecTab=(LPVOID)((DWORD)pSectionHeader+sizeof(IMAGE_SECTION_HEADER)*dwNumOfSections)。=(pSectionHeader+dwNumOfSections1)PointerToRawData+(pSectionHeader+dwNumOfSections1)SizeOfRawData。=(pSectionHeader+dwNumOfSections1)VirtualAddress+dwAlignLastSection。}dwAlignLastSection=(pSectionHeader+dwNumOfSections1)SizeOfRawData。{}dwAlignLastSection=dwSectionAlign*((pSectionHeader+dwNumOfSections1)SizeOfRawData / dwSectionAlign+1)。{//行號表中行號數(shù)目//行號表偏移=0。=0。//區(qū)塊名稱memcpy(amp。=IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE。=(SizeOfShell%dwFileAlign)?(dwFileAlign*(SizeOfShell/dwFileAlign+1)):SizeOfShell。//在文件中對齊后的大小,除以文件粒度,如果余數(shù)為零,就直接使用;否則,就擴充對齊。//設(shè)定殼的區(qū)塊表信息dwNumOfSections=pNtHeader。//獲取對齊大小數(shù)據(jù)SectionHeaderOfShell,0,sizeof(SectionHeaderOfShell))。//初始化區(qū)段表結(jié)構(gòu)IMAGE_SECTION_HEADERlpShellSecTab。//最后一個區(qū)段按內(nèi)存對齊后的大小dwAlignLastSection。//塊粒度(內(nèi)存對齊大?。ヾwSectionAlign。//文件粒度(文件對齊大?。ヾwFileAlign。//區(qū)塊個數(shù)dwNumOfSections。//修改PE文件頭信息,主要是區(qū)塊個數(shù)和鏡像大小void CPEPackerDlg::EditHeader(){memset(lpVirtualShell,8,SizeOfShell)。lpVirtualShell=VirtualAlloc(NULL,SizeOfShell,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE)。//殼代碼段中暫定為用8填充//文件鏡像大小MakeShell函數(shù)功能是生成殼代碼數(shù)據(jù),先暫時用0填充該數(shù)據(jù)段。DWORDDWORDLPVOID再添加兩個成員變量,public型。void EditHeader()。void MakeShell(HANDLE hFile)。BOOL MakePacking(HANDLE hFile)。第二,獲取要添加的區(qū)段的存放位置和大小,包括文件偏移位置和大小、文件相對虛擬地址和虛擬大小第三,就是將文件寫入到文件末尾。第一,是修改PE文件頭信息。本次內(nèi)容只添加區(qū)段,不修改程序入口點。本次內(nèi)容將添加一個新的區(qū)段到原PE文件中,一般加殼程序都會添加一個新的區(qū)段用來存放殼代碼(這只是一般情況)。MessageBox(創(chuàng)建文件成功!,成功提示,MB_OK)。//在編輯框中顯示信息CloseHandle(hFile)。//文件寫入完畢后,釋放內(nèi)存CloseHandle(hFile)。//卸載文件映射,關(guān)閉文件句柄dwBufferRead,NULL))//寫入文件if (hFile==INVALID_HANDLE_VALUE)NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)。hFile=CreateFile(m_FilePathNamePacked,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,//獲取文件大小MessageBox(文件加載到內(nèi)存失?。?錯誤提示!,MB_OK)。if (!MemAlloc(hFile))//////////第四次內(nèi)容。}return。(錯誤提示:文件不是PE格式!\r\n)。{//判斷文件格式}return。if (hFile==INVALID_HANDLE_VALUE)//如果文件打開失敗,就彈出對話框,并返回。OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)。hFile=CreateFile(m_FilePathName,GENERIC_READ,FILE_SHARE_READ,NULL,//實際讀取字節(jié)dwBufferRead。//文件大小dwFileSize。//文件句柄HANDLE hFile。{為了優(yōu)化函數(shù),把第2次內(nèi)容所使用的文件映射相關(guān)的內(nèi)容都刪除掉。}最后編譯,運行,即可。return。MessageBox(寫入文件失?。?錯誤提示!,MB_OK)。{if (!WriteFile(hFile,lpVirtualtAlloc,dwFileSize,amp。//在編輯框中顯示信息……………………………
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1