使用dll進行驗證的註冊方式
暴破之瞞天過海
分析某軟體的註冊驗證, 發現它是通過使用一個dll來判斷keyfile內容是否正確, 是否在使用期之內, 並且這個子程序作的很是複雜, 當然如果想找算法還是能找得到:) 如keyfile正確, 則返回eax=0, 並且記憶體某位置的8個字元應該為類BIOS的一個值. 這樣, 分析dll文件, 發現它僅有這一個匯出的函數, 那麼仿造這樣一個dll是完全可行的。內容簡單如下: .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data .RADIX 16 SomeThing db 26, 1d, 28, 15, 34, 5d, 08, 4b, 10, 1b, 00 .code .RADIX 16 DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD mov eax,TRUE ret DllEntry Endp ;--------------------------------------------------------------------------------------------------- ;反擊1。 ;---------------------------------------------------------------------------------------------------- XXXX proc push ecx push esi push edi mov edi, dword ptr [esp+14] ;待賦值記憶體位置 lea esi, SomeThing push 0b pop ecx rep movsb pop edi pop esi pop ecx xor eax, eax ;正確的返回值 ret 0c ;入棧有三個參數,保持stack平衡 XXXX endp End DllEntry |
所有時間均為台北時間。現在的時間是 01:01 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *