




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、前言:相信不少朋友辛辛苦苦找到的補丁數據,被別人輕而易舉的竊取了.本文就來講講怎么防止別人竊取的方法一一列舉出來.)的補丁數據.(這也是個矛與盾的話題,本文只是把常見先講API HOOK.API HOOK 技術,對于新手來說可能非常的神秘,其實它并不神秘,用一句話來概述就是 搶在它前面,做些小動作. 或 修改 EIP 等.現在的家用電腦的U 普遍都是 x86. 在保護模式下,每個進程都是獨立的虛擬 4GB 內存空間.它們彼此都互不干擾.或者修改某個進程的某個內存空間.如果EPRO想就必須得到那個進程的或者讀寫的內存地址按 CR4 里S , 然后通過 EPROS 找到 CR3 再把想要的 PAE
2、 位拆分. 然后再把 CR3 加上 拆分后的 PDE 加上拆分后的 PTE 加上 OFFSET.等等.才能實現 R/W 一段內存空間. 但是僅僅知道這些是的,限CR3 的,因此又不得不去了解段機制. 天吶 僅僅因為這些用戶層是沒一個讀寫內存就這么麻煩? 是的,就是有這么麻煩.不過還好.MS 的人考慮的周到.他們把這些煩鎖的步驟,封裝成一個方法.供Anti Hook API(先斬后奏)調用.欲稱Windows API.上面說的煩鎖的過程,可以通過 2 個API 輕松實現.Kernel32!RerosMemory/ 讀指定進程內存Kernel32!WriteProsMemory / 寫指定進程內存
3、知已知彼 百戰不殆!通過 Kernel32!WriteProsMemory 就能制作的補丁程序了.如果想知道別人寫什么數據,可以通過 HOOK Kernel32!WriteProsMemory這樣的函數. 來得到別人的補丁數據.這樣的偷竊也很好反.我在這里就舉兩三個小例子.1) 設置分頁屬性:知道物理頁(PA), 一般有PTE第 0 位 P 位:為 1 時 存在 | 為 0 時 不存在.第 1 位 R/W 位: 為 1 時 可寫| 為 0 時 不可寫第 2 位 U/S 位: 為 1 時 用戶權限 | 為 0 時 系統權限PTE之區分.這些屬性在 PTE(頁表項) 對應的 第 0 位 第 1 位
4、 第 2 位.P 位為 0 時,在 Windbg 下在 OD 下,會顯示 No memory on the specified address,會顯示 ? ? ? ?R/W 或 U/S 位為 0 時,會提示一個 0 xC0000005 寫,異常.P 位 R/W 位和 U/S 位,是沒限操作的.(本章主要講解應用層的).但是 R/W 位, MS 的人,也給留了一個操作函數.Kernel32!VirtualProtect/設置本進程指定低 2G 內存分頁屬性(范圍 4KB 即 0 x1000)有了這個函數,代碼:就可以間接的修改 R/W 位了./ 這里是 MSG 硬編碼,(本人當前機器是 XP S
5、p2 英文系統,硬編碼的) BYTE szWriteBuffer =0 x6a, 0 x40,0 x68, 0 xe2, 0 x24,0 xa6, 0 x7c, 0 x68,0 xe2, 0 x 24, 0 xa6, 0 x7c,0 x6a, 0 x00, 0 xe8,0 x0c,0 xe0, 0 x31,0 xfb, 0 xc2, 0 x10,0 x00, 0 x90, 0 xb0,0 xeb, 0 x bd, 0 xef, 0 xb0,0 xcb, 0 xc1, 0 xbd,0 xb7,0 xb4, 0 xb2,0 xb9, 0 xb6, 0 xa1,0 x00; HMODULE hMod
6、ule =GetModuleHandle(Kernel32.dll);LPVOID lpWriteFun = GetProcAddress(hModule, WriteProsMemory);/ 英文計算器HWND hWnd =:FindWindow(NULL, Calculator); DWORD dw=0;GetWindowThrerosId(hWnd, &dw);HANDLE h=:OpenPros(PROS_ALL_ACS, FALSE,dw);WriteProsMemory(h,_ADDRESS, szWriteBuffer, sizeof( szWriteBuffer), NULL
7、);DWORD dwOldProtect = 0;這樣做,是在機早.執行完補丁后,才修改屬性.這樣時機得早.否則,一切都是瞎忙活.只要時對方在 HOOK 這個函數的時候,就會產生一個 0 xC0000005我們的數據了.異常. 這樣,對方就不能偷竊2.檢測 HOOK 指令.已經了, HOOK 就是在做某事前,先干些自己的事.也就是修改 EIP.面想想修改 EIP 的,無非就是 JCC push/ret call 這幾種. 但是當下系統之多,不得不考慮兼容性. 所以一般 HOOK,節.為什么正好是前 5 個字節.不是前 4 個字節,6 個字節呢?都會 HOOK,函數的前 5 個字來看看 Writ
8、ePro代碼:sMemory 函數可以看的出來, JMP 指令 0 xe9 1 個字節, 加上 (目標地址 - 當前地址 - 5) 結果 4 個字節 ,加起來正好 5 個字節.就可以用 JMP 0 xx 來代替前面的 5 個字節. 這樣的,最方便,也最健壯.當然,也最容易被發現了 :(如此一來,只要檢測WriteProsMemory 第 1 個字節,是不是為 0 xe9,就可以輕松檢測到是否 HOOK.當然了,此法在這里要排除那些不考慮程序兼容性亂 HOOK 的朋友.也要排除那些為了防止被發現 HOOK,將所有不同系統的硬編碼都加到程序里面判斷的朋友.(如此一來,他可以不用再前 5 個字節修改
9、 EIP. 他可以爭對不 同系統,在不同地方,用不同的方法修改EIP.不一定非要用 JCC, 也可以用 push/ret 之類的指令,修改 EIP. )7C80220F 8BFFmov edi,edi;/ WriteProsMemory7C80221155pushebp 7C8022128BECmov ebp,esp 7C802214|.51pushecx7C802215|.51pushecx 7C802216|.8B45 0Cmov eax,arg.2用 JMP 指令來修改到任意一個 EIP.7C80220F -E9 EBDD7F03jmp7F;/WriteProsMemory7C80221
10、4|.51pushecx7C802215|.51pushecx 7C802216|.8B45 0Cmov eax,arg.2VirtualProtect(lpWriteFun, 0 x1, PAGE_NOACS,&dwOldProtect);2) Shadow Function(函數)相信不少朋友應該看過火影忍者.那里面的鳴人練就了一個本領,多重影 每當快要被敵人打到的時候,他就會使用多重影而已.,將本體,被敵人打到的,只是一個影在計算機中,也有這么一個多重影術.Shadow Function. 這個并不是當下什么流行的技術. 當下的一些流行殼,像比如 ZP SE 等知名殼.都有使用 Shad
11、ow Function 技術.也可以使用這個技術反內存監視.讓監視者們,監視的影.而真身寫入的數據.敵人渾然不知. 聽起來是不是很 cool ? 但是,要實現 Shadow 必須要熟知 PE 結構.自己模擬 PE 裝載模塊. 像小菜不懂 PE 怎么辦?在這里,我在教大家一種簡單的方法.不知道大家有沒有注意,我面寫的每個函數前面都有加一個模塊名. 那個模塊名,就是函數的所在模塊. 一般都是在 SYSTEM32 目錄下.可以直接將他拷貝出來, 改一下名字.然后直接調用它,就可以了.代碼:/ 這里是 MSG 硬編碼,(本人當前機器是 XP Sp2 英文系統,硬編碼的) BYTE szWriteBuf
12、fer =0 x6a, 0 x40,0 x68, 0 xe2, 0 x24,0 xa6, 0 x7c, 0 x68,0 xe2, 0 x 24, 0 xa6, 0 x7c,0 x6a, 0 x00, 0 xe8,0 x0c,0 xe0, 0 x31,0 xfb, 0 xc2, 0 x10,0 x00, 0 x90, 0 xb0,0 xeb, 0 x bd, 0 xef, 0 xb0,0 xcb, 0 xc1, 0 xbd,0 xb7,0 xb4, 0 xb2,0 xb9, 0 xb6, 0 xa1,0 x00;void CPage1:OnAntiMonitor()HMODULE hModule
13、 =LoadLibrary(WriteMem.dll);DWORD WriteFun= (DWORD)GetProcAddress(hModule, WritePros Memory);BOOL(WINAPI *lpWriteFun)(HANDLE , LPVOID, LPCVOID, SIZ E_T ,SIZE_T *);lpWriteFun =( stdcall *)(void *,void *,constvoid*,unsigned long,unsigned long*)WriteFun;/英文計算器HWNDhWnd =:FindWindow(NULL, Calculator);DWORD dw=0;這樣子,別人再 HOOKKernel32!WriteProsMemory ,就是 HOOK的多重影而了.:)本體函數,是可以正常的執行,不受任何影響
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論