|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-12-12, 03:47 AM | #1 |
榮譽會員
|
Directory Scanner v1.5 註冊算法分析
Directory Scanner v1.5 註冊算法分析
破解目標:Directory Scanner v1.5 官方主頁:http://dekasoftware.mastak.com/ 軟體簡介:通過設定過濾掩碼,讓你快速搜尋電腦中的文件 下載位址:http://dekasoftware.mastak.com/dirscan.zip 使用工具:W32Dasm、Ollydbg、Windows 自帶的計算器、32bit Calculator 1.6 by cybult 作者:炎之川 時間:2003.4.2 主頁:http://skipli.yeah.net/ 宣告: 此文僅用於學習及交流,若要轉載請保持文章完整。 Delphi 寫的軟體,也沒有什麼干擾分析的東西,W32Dasm 反彙編後可以在串式參考中找到註冊成功及失敗的提示,算法也比較簡單。 簡單分析後用 Ollydbg 載入程序,在 43D538 處下斷點,然後 Ctrl+F2 重新開始,F9 執行程序,在註冊對話視窗中填入註冊名和假註冊碼,我填入: Name: lovefire S/N: 78787878 按 Register,被 Ollydbg 斷下: (; 後是 Ollydbg 所分析的內容,// 後是我加的註釋) 0043D538 /. 55 PUSH EBP //停在這裡 0043D539 |. 8BEC MOV EBP,ESP 0043D53B |. 6A 00 PUSH 0 0043D53D |. 6A 00 PUSH 0 0043D53F |. 53 PUSH EBX 0043D540 |. 56 PUSH ESI 0043D541 |. 57 PUSH EDI 0043D542 |. 8BF8 MOV EDI,EAX 0043D544 |. 33C0 XOR EAX,EAX 0043D546 |. 55 PUSH EBP 0043D547 |. 68 3BD64300 PUSH DirScan.0043D63B 0043D54C |. 64:FF30 PUSH DWORD PTR FS:[EAX] 0043D54F |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 0043D552 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 0043D555 |. 8B87 E0010000 MOV EAX,DWORD PTR DS:[EDI+1E0] 0043D55B |. E8 20E4FDFF CALL DirScan.0041B980 //取得註冊名 0043D560 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //註冊名放入 eax 0043D563 |. E8 2465FCFF CALL DirScan.00403A8C //比較是否已輸入註冊名 0043D568 |. 33DB XOR EBX,EBX 0043D56A |. 8BF0 MOV ESI,EAX //eax 中是註冊名 0043D56C |. 85F6 TEST ESI,ESI //用戶名輸入了麼? 0043D56E |. 7E 22 JLE SHORT DirScan.0043D592 //沒有輸入就886啦~~~ 0043D570 |. B9 01000000 MOV ECX,1 //ecx 置1,作為記數器 //算法開始 0043D575 |> 69C1 15CD5B07 /IMUL EAX,ECX,75BCD15 //eax = ecx*75BCD15,ecx 是記數器 0043D57B |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4] //註冊名送 edx 0043D57E |. 0FB6540A FF |MOVZX EDX,BYTE PTR DS:[EDX+ECX-1] //逐位取註冊名的字串 0043D583 |. F7EA |IMUL EDX //eax*edx,得數放入eax,溢出值放入edx 0043D585 |. 03C3 |ADD EAX,EBX //eax=eax+ebx,此處第一次循環時ebx=0 0043D587 |. 99 |CDQ //edx 清零 0043D588 |. 33C2 |XOR EAX,EDX //eax異或edx,得數放入eax 0043D58A |. 2BC2 |SUB EAX,EDX //eax=eax-edx,edx中是上面乘法運算的溢出值 0043D58C |. 8BD8 |MOV EBX,EAX //ebx=eax 0043D58E |. 41 |INC ECX //ecx+1,即記數器+1 0043D58F |. 4E |DEC ESI //esi-1 0043D590 |.^75 E3 \JNZ SHORT DirScan.0043D575 //跳回去繼續循環 //算法結束,eax 中儲存的就是註冊碼的16進制值,轉換為10進制即是註冊碼 0043D592 |> 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 0043D595 |. 8B87 E8010000 MOV EAX,DWORD PTR DS:[EDI+1E8] 0043D59B |. E8 E0E3FDFF CALL DirScan.0041B980 0043D5A0 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //取假碼 0043D5A3 |. 33D2 XOR EDX,EDX 0043D5A5 |. E8 3294FCFF CALL DirScan.004069DC 0043D5AA |. 3BD8 CMP EBX,EAX //比較真假註冊碼 0043D5AC |. 75 4D JNZ SHORT DirScan.0043D5FB //不同則註冊失敗,若此處改為 jne 0043D5AE,不管註冊碼是否正確都寫入 dirscan.ini 文件,即可爆破(軟體沒有在啟動的時候再次驗證註冊碼有效性) 0043D5AE |. A1 E8FA4300 MOV EAX,DWORD PTR DS:[43FAE8] 0043D5B3 |. 8918 MOV DWORD PTR DS:[EAX],EBX 0043D5B5 |. B9 54D64300 MOV ECX,DirScan.0043D654 ; ASCII "dirscan.ini" 0043D5BA |. B2 01 MOV DL,1 0043D5BC |. A1 644F4300 MOV EAX,DWORD PTR DS:[434F64] 0043D5C1 |. E8 FA79FFFF CALL DirScan.00434FC0 0043D5C6 |. 8BF0 MOV ESI,EAX 0043D5C8 |. 53 PUSH EBX 0043D5C9 |. B9 68D64300 MOV ECX,DirScan.0043D668 ; ASCII "Serial" 0043D5CE |. BA 78D64300 MOV EDX,DirScan.0043D678 ; ASCII "Register" //註冊成功就將信息寫入 dirscan.ini 中 0043D5D3 |. 8BC6 MOV EAX,ESI 0043D5D5 |. E8 DE7BFFFF CALL DirScan.004351B8 0043D5DA |. 8BC6 MOV EAX,ESI 0043D5DC |. E8 5B57FCFF CALL DirScan.00402D3C 0043D5E1 |. 6A 40 PUSH 40 0043D5E3 |. B9 84D64300 MOV ECX,DirScan.0043D684 ; ASCII "Directory scanner" 0043D5E8 |. BA 98D64300 MOV EDX,DirScan.0043D698 ; ASCII "Thank you for registering Directory Scanner!" //註冊成功 0043D5ED |. A1 A4FB4300 MOV EAX,DWORD PTR DS:[43FBA4] 0043D5F2 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 0043D5F4 |. E8 53DFFEFF CALL DirScan.0042B54C 0043D5F9 |. EB 18 JMP SHORT DirScan.0043D613 0043D5FB |> 6A 10 PUSH 10 0043D5FD |. B9 84D64300 MOV ECX,DirScan.0043D684 ; ASCII "Directory scanner" 0043D602 |. BA C8D64300 MOV EDX,DirScan.0043D6C8 ; ASCII "Wrong Serial Number. Register aborted!" //註冊失敗 0043D607 |. A1 A4FB4300 MOV EAX,DWORD PTR DS:[43FBA4] 0043D60C |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 0043D60E |. E8 39DFFEFF CALL DirScan.0042B54C 0043D613 |> A1 68074400 MOV EAX,DWORD PTR DS:[440768] 0043D618 |. E8 5BBDFEFF CALL DirScan.00429378 0043D61D |. 33C0 XOR EAX,EAX 0043D61F |. 5A POP EDX 0043D620 |. 59 POP ECX 0043D621 |. 59 POP ECX 0043D622 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 0043D625 |. 68 42D64300 PUSH DirScan.0043D642 0043D62A |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 0043D62D |. E8 DE61FCFF CALL DirScan.00403810 0043D632 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 0043D635 |. E8 D661FCFF CALL DirScan.00403810 0043D63A \. C3 RETN 具體算法: 1、具體循環次數乘預設的數75BCD15,再乘逐位取得的註冊名的ASCII值,值放入eax,溢出值放入edx,最後加上ebx的值,ebx初始值為0,第二次循環的值由第一次循環所得值決定,之後累加; 2、edx雙字擴展(清零)之後,(eax*edx)-edx,得出的值放入 ebx,供下次循環使用; 3、循環完成之後,eax中存放的值即註冊碼的16進制數,轉換為10進制即為註冊碼。 一組可用的註冊碼: Name: lovefire S/N: 1870109538 註冊成功後,註冊信息寫入 windows 安裝目錄下的 dirscan.ini 文件中。 |
送花文章: 3,
|
主題工具 | |
顯示模式 | |
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
Win2k域的制作備份與恢復 | psac | 作業系統操作技術文件 | 0 | 2006-03-20 08:11 AM |
新增可引導光碟更完美的解決之道 | psac | 應用軟體使用技術文件 | 1 | 2004-02-22 07:52 PM |
Windows 活動目錄詳解 | psac | 作業系統操作技術文件 | 3 | 2003-12-17 11:15 AM |
Windows 活動目錄詳解 | psac | 作業系統操作技術文件 | 0 | 2003-12-01 01:41 PM |
解決 Windows 2000 中的一般 Active Directory 安裝問題 | psac | 作業系統操作技術文件 | 0 | 2003-10-31 01:34 AM |