黑客字典 II(限制版)
目標:黑客字典 II(限制版)
工具:olly
作者:FTBirthday
軟體說明:黑客字典II是在黑客字典V0.9釋出之後,在聽取廣大網友意見的基礎上重寫而成的。
她幾乎可以生成任何形式的密碼組合,可用於產生密碼檔案,以便和一些解密軟體配合使用。
如:網路刺客、John The Ripper、Jack、CrackZip、CrackArj等。本軟體是免費的,您可以
自由傳播。----------小榕軟體實驗室
註冊說明:本軟體是一個共享軟體,如果您需要使用它的全部功能,測需要進行註冊。這種註冊
是免費的。您只要發一封標題為“註冊”的電子郵件到Assassin@ynmail.com即可收到以同樣方
式發回的註冊碼。
用olly載入,點選註冊,輸入
使用者名稱"FTBirthday",註冊碼"510510510"
設斷GetWindowTextA
中斷於
0012ECC8 0042002E /CALL to GetWindowTextA from UltraDic.00420028
0012ECCC 0045022E |hWnd = 0045022E (class='Edit',parent=00100232)
0012ECD0 0012ED04 |Buffer = 0012ED04
0012ECD4 00000064 Count = 64 (100.)
最終返回到
00420028 |. FF15 C0B34200 CALL DWORD PTR DS:[<&USER32.GetWindowTex>; GetWindowTextA
0042002E |. EB 12 JMP SHORT UltraDic.00420042
*****************************************************************
關鍵程式碼段
*****************************************************************
00401BF5 . E8 1CE40100 CALL UltraDic.00420016
00401BFA . 8D7C24 20 LEA EDI,DWORD PTR SS:[ESP+20] ; DWORD PTR SS:[ESP+20]="FTBirthday"
00401BFE . 83C9 FF OR ECX,FFFFFFFF
00401C01 . 33C0 XOR EAX,EAX ; EAX為使用者名稱的長度
00401C03 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401C05 . F7D1 NOT ECX ; ECX=使用者名稱的長度+1取反
00401C07 . 49 DEC ECX ; ECX=ECX-1=0000000A,判斷使用者名稱是否為空
00401C08 . 0F84 16020000 JE UltraDic.00401E24
00401C0E . 8DBC24 8400000>LEA EDI,DWORD PTR SS:[ESP+84] ; DWORD PTR SS:[ESP+84]="510510510"
00401C15 . 83C9 FF OR ECX,FFFFFFFF
00401C18 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401C1A . F7D1 NOT ECX ; ECX=註冊碼的長度+1取反
00401C1C . 49 DEC ECX ; ECX=00000009,判斷註冊碼是否為空
00401C1D . 0F84 01020000 JE UltraDic.00401E24
下面開始對使用者名稱進行運算得出一個相應的字串
00401C23 . 8D7C24 20 LEA EDI,DWORD PTR SS:[ESP+20] ; DWORD PTR SS:[ESP+20]="FTBirthday"
00401C27 . 83C9 FF OR ECX,FFFFFFFF
00401C2A . 33F6 XOR ESI,ESI ; ESI清零
00401C2C . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401C2E . F7D1 NOT ECX ; ECX=使用者名稱的長度+1取反
00401C30 . 49 DEC ECX ; ECX=ECX-1=0000000A,判斷使用者名稱是否為空
00401C31 . 74 79 JE SHORT UltraDic.00401CAC
00401C33 > 0FBE7C34 20 MOVSX EDI,BYTE PTR SS:[ESP+ESI+20] ; 取使用者名稱第i個字元,符號擴充套件給EDI
00401C38 . 8BC7 MOV EAX,EDI ; EAX=EDI=使用者名稱第i個字元
00401C3A . B9 0A000000 MOV ECX,0A
00401C3F . 99 CDQ ; 把EDX清零
00401C40 . F7F9 IDIV ECX ; EAX/ECX,EAX放商,EDX放餘數
00401C42 . 8BCA MOV ECX,EDX
00401C44 . 81E2 01000080 AND EDX,80000001
00401C4A . 79 05 JNS SHORT UltraDic.00401C51 ; 非負數則跳
00401C4C . 4A DEC EDX
00401C4D . 83CA FE OR EDX,FFFFFFFE
00401C50 . 42 INC EDX
00401C51 > 75 16 JNZ SHORT UltraDic.00401C69 ; 不為零則跳
00401C53 . 8BC7 MOV EAX,EDI ; EAX=EDI=使用者名稱第i個字元
00401C55 . B9 1A000000 MOV ECX,1A
00401C5A . 99 CDQ
00401C5B . F7F9 IDIV ECX ; EAX/ECX,EAX放商,EDX放餘數
00401C5D . 80C2 41 ADD DL,41 ; 餘數低八位DL+41
00401C60 . 889434 4801000>MOV BYTE PTR SS:[ESP+ESI+148],DL ; DL=53="S"
00401C67 . EB 2E JMP SHORT UltraDic.00401C97
00401C69 > 8BC1 MOV EAX,ECX ; 餘數不為零時把餘數給EAX
00401C6B . BB 03000000 MOV EBX,3
00401C70 . 99 CDQ ; 把EDX清零
00401C71 . F7FB IDIV EBX ; EAX/EBX,EAX放商,EDX放餘數
00401C73 . 85D2 TEST EDX,EDX ; 看看第二次,餘數是否為零
00401C75 75 16 JNZ SHORT UltraDic.00401C8D ; 不為零則跳
00401C77 . 8BC7 MOV EAX,EDI ; EAX=EDI=使用者名稱第i個字元
00401C79 . B9 1A000000 MOV ECX,1A
00401C7E . 99 CDQ
00401C7F . F7F9 IDIV ECX ; EAX/ECX,EAX放商,EDX放餘數
00401C81 . 80C2 61 ADD DL,61 ; 餘數低八位DL+61
00401C84 . 889434 4801000>MOV BYTE PTR SS:[ESP+ESI+148],DL
00401C8B . EB 0A JMP SHORT UltraDic.00401C97
00401C8D > 80C1 31 ADD CL,31 ; 餘數低八位CL+31
00401C90 . 888C34 4801000>MOV BYTE PTR SS:[ESP+ESI+148],CL
00401C97 > 8D7C24 20 LEA EDI,DWORD PTR SS:[ESP+20] ; DWORD PTR SS:[ESP+20]="FTBirthday"
00401C9B . 83C9 FF OR ECX,FFFFFFFF
00401C9E . 33C0 XOR EAX,EAX
00401CA0 . 46 INC ESI ; 取字元計數器
00401CA1 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401CA3 . F7D1 NOT ECX ; ECX=使用者名稱的長度+1取反
00401CA5 . 49 DEC ECX ; ECX=ECX-1=0000000A,使用者名稱長度
00401CA6 . 3BF1 CMP ESI,ECX ; 比較是否已取完使用者名稱所有字元
00401CA8 .^72 89 JB SHORT UltraDic.00401C33 ; 小於則跳回迴圈
下面算出的字串將和輸入的註冊碼進行比較
00401CAA . 33DB XOR EBX,EBX
00401CAC > 55 PUSH EBP
00401CAD . 8D8C24 EC00000>LEA ECX,DWORD PTR SS:[ESP+EC]
00401CB4 . 889C34 4C01000>MOV BYTE PTR SS:[ESP+ESI+14C],BL
00401CBB . E8 F0010000 CALL UltraDic.00401EB0
00401CC0 . 899C24 B401000>MOV DWORD PTR SS:[ESP+1B4],EBX
00401CC7 . 8DB424 8400000>LEA ESI,DWORD PTR SS:[ESP+84] ; ESI=註冊碼
00401CCE . 8D8424 4801000>LEA EAX,DWORD PTR SS:[ESP+148] ; EAX=使用者名稱變換後的字元
00401CD5 > 8A10 MOV DL,BYTE PTR DS:[EAX] ; 使用者名稱變換後的第i個字元給DL
00401CD7 . 8ACA MOV CL,DL
00401CD9 . 3A16 CMP DL,BYTE PTR DS:[ESI] ; 和註冊碼的第i個字元比較
00401CDB . 75 1C JNZ SHORT UltraDic.00401CF9
00401CDD . 3ACB CMP CL,BL ; 比較是否為空
00401CDF . 74 14 JE SHORT UltraDic.00401CF5
00401CE1 . 8A50 01 MOV DL,BYTE PTR DS:[EAX+1] ; 使用者名稱變換後的第i+1個字元給DL
00401CE4 . 8ACA MOV CL,DL
00401CE6 . 3A56 01 CMP DL,BYTE PTR DS:[ESI+1] ; 和註冊碼的第i+1個字元比較
00401CE9 . 75 0E JNZ SHORT UltraDic.00401CF9
00401CEB . 83C0 02 ADD EAX,2
00401CEE . 83C6 02 ADD ESI,2
00401CF1 . 3ACB CMP CL,BL ; 比較是否為空BL
00401CF3 .^75 E0 JNZ SHORT UltraDic.00401CD5 ; 不為零則跳回繼續比較
至此,比較完成,下面是將註冊資訊寫到"C: egbanyet.dat"檔案中
00401CF5 > 33C0 XOR EAX,EAX
00401CF7 . EB 05 JMP SHORT UltraDic.00401CFE
00401CF9 > 1BC0 SBB EAX,EAX
00401CFB . 83D8 FF SBB EAX,-1
00401CFE > 3BC3 CMP EAX,EBX
00401D00 . 0F85 DF000000 JNZ UltraDic.00401DE5
00401D06 . 68 01100000 PUSH 1001
00401D0B . 68 F4704300 PUSH UltraDic.004370F4 ; ASCII "C:
egbanyet.dat"
00401D10 . 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]
00401D14 . E8 8FEF0100 CALL UltraDic.00420CA8
00401D19 . 8D7C24 20 LEA EDI,DWORD PTR SS:[ESP+20]
00401D1D . 83C9 FF OR ECX,FFFFFFFF
00401D20 . 33C0 XOR EAX,EAX
00401D22 . B2 0D MOV DL,0D
00401D24 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401D26 . F7D1 NOT ECX
00401D28 . 49 DEC ECX
00401D29 . 8DBC24 8400000>LEA EDI,DWORD PTR SS:[ESP+84]
00401D30 . C68424 B401000>MOV BYTE PTR SS:[ESP+1B4],1
00401D38 . 88540C 20 MOV BYTE PTR SS:[ESP+ECX+20],DL
00401D3C . 41 INC ECX
00401D3D . C6440C 20 0A MOV BYTE PTR SS:[ESP+ECX+20],0A
00401D42 . 885C0C 21 MOV BYTE PTR SS:[ESP+ECX+21],BL
00401D46 . 83C9 FF OR ECX,FFFFFFFF
00401D49 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401D4B . F7D1 NOT ECX
00401D4D . 49 DEC ECX
00401D4E . 8D7C24 20 LEA EDI,DWORD PTR SS:[ESP+20]
00401D52 . 88940C 8400000>MOV BYTE PTR SS:[ESP+ECX+84],DL
00401D59 . 41 INC ECX
00401D5A . C6840C 8400000>MOV BYTE PTR SS:[ESP+ECX+84],0A
00401D62 . 889C0C 8500000>MOV BYTE PTR SS:[ESP+ECX+85],BL
00401D69 . 83C9 FF OR ECX,FFFFFFFF
00401D6C . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401D6E . F7D1 NOT ECX
00401D70 . 49 DEC ECX
00401D71 . 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20] ; 使用者名稱給EAX
00401D75 . 51 PUSH ECX ; /Arg2
00401D76 . 50 PUSH EAX ; |Arg1
00401D77 . 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18] ; |
00401D7B . E8 DCF10100 CALL UltraDic.00420F5C ; UltraDic.00420F5C
00401D80 . 8DBC24 8400000>LEA EDI,DWORD PTR SS:[ESP+84]
00401D87 . 83C9 FF OR ECX,FFFFFFFF
00401D8A . 33C0 XOR EAX,EAX
00401D8C . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00401D8E . F7D1 NOT ECX
00401D90 . 49 DEC ECX
00401D91 . 51 PUSH ECX ; /Arg2
00401D92 . 8D8C24 8800000>LEA ECX,DWORD PTR SS:[ESP+88] ; |
00401D99 . 51 PUSH ECX ; |Arg1
00401D9A . 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18] ; |
00401D9E . E8 B9F10100 CALL UltraDic.00420F5C ; UltraDic.00420F5C
00401DA3 . 6A 03 PUSH 3 ; /FileAttributes = READONLY|HIDDEN
00401DA5 . 68 F4704300 PUSH UltraDic.004370F4 ; |FileName = "C:
egbanyet.dat"
00401DAA . FF15 8CB24200 CALL DWORD PTR DS:[<&KERNEL32.SetFileAtt>; SetFileAttributesA
00401DB0 . 68 D8704300 PUSH UltraDic.004370D8
00401DB5 . 8D8C24 EC00000>LEA ECX,DWORD PTR SS:[ESP+EC]
00401DBC . E8 AF010000 CALL UltraDic.00401F70 *******[到這兒彈出註冊成功資訊]********
00401DC1 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
00401DC5 . 889C24 B401000>MOV BYTE PTR SS:[ESP+1B4],BL
00401DCC . E8 77EF0100 CALL UltraDic.00420D48
00401DD1 . 8BCD MOV ECX,EBP
00401DD3 . E8 44B50100 CALL UltraDic.0041D31C
00401DD8 . C78424 B401000>MOV DWORD PTR SS:[ESP+1B4],3
00401DE3 . EB 1C JMP SHORT UltraDic.00401E01
00401DE5 > 68 C0704300 PUSH UltraDic.004370C0
00401DEA . 8D8C24 EC00000>LEA ECX,DWORD PTR SS:[ESP+EC]
00401DF1 . E8 7A010000 CALL UltraDic.00401F70
00401DF6 . C78424 B401000>MOV DWORD PTR SS:[ESP+1B4],2
00401E01 > 8D8C24 4401000>LEA ECX,DWORD PTR SS:[ESP+144]
00401E08 . E8 CCEB0100 CALL UltraDic.004209D9
00401E0D . 8D8C24 E800000>LEA ECX,DWORD PTR SS:[ESP+E8]
00401E14 . C78424 B401000>MOV DWORD PTR SS:[ESP+1B4],-1
00401E1F . E8 43AE0100 CALL UltraDic.0041CC67
00401E24 > 8B8C24 AC01000>MOV ECX,DWORD PTR SS:[ESP+1AC] ; 註冊名為空則直接來到這兒
00401E2B . 5F POP EDI
00401E2C . 5E POP ESI
00401E2D . 5D POP EBP
00401E2E . 5B POP EBX
00401E2F . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00401E36 . 81C4 A8010000 ADD ESP,1A8
00401E3C . C3 RETN
最後把使用者名稱和註冊碼,放入到"C: egbanyet.dat"檔案中,屬性是隻讀,隱藏。
總結:
序號產生器制:
由使用者名稱算出一個註冊碼並與輸入的註冊碼比較,並且這個真碼出現在記憶體中,
使用者名稱長度=註冊碼長度
註冊演算法模擬:
設使用者名稱字元對應ASCII為a[i],相應字串為b[i]
t1=a[i]%A;
if (t1!=0)
{t2=t1%3;
if (t2!=0) b[i]=t1+31;
else b[i]=a[i]%1A+31;}
else b[i]=a[i]%1A+41;
於是有
使用者名稱:FTBirthday
註冊碼:SGO6KMAW82
相關文章
- 黑客字典II2002-08-19黑客
- 黑客之王!韓國神童登頂黑客界的“極限挑戰”2017-07-03黑客
- 無限遊戲存檔II v2.3.38 **過程 (3千字)2002-01-12遊戲
- MySQL-5.6.x二進位制版本安裝記錄2016-05-24MySql
- 在 Linux 上安裝 NDB Cluster 二進位制版本2024-07-15Linux
- Range Addition II 範圍求和 II2018-11-14
- 字典2024-09-27
- Hackable: II2024-05-05
- codevs 4189 字典【字典樹】2018-09-03dev
- InnoDB資料字典--字典表載入2018-04-06
- 字串形式的列表,字典轉列表,字典2024-03-26字串
- Swift,字典2017-09-13Swift
- 字典案例2024-04-01
- 四、字典2024-07-27
- 字典樹2024-08-22
- Reflective Journal II2024-04-20
- Bracket Sequences II2024-07-29Racket
- (原創) 如何破解Quartus II 7.2 SP1? (IC Design) (Quartus II) (Nios II)2019-01-07iOS
- iOS 字典轉陣列,陣列轉字典2018-10-23iOS陣列
- 極限2024-04-25
- 黑客老王:一個人的黑客史2016-10-29黑客
- 黑吃黑——黑客組織通過黑客工具攻擊其他黑客2020-03-11黑客
- Oracle 資料字典和資料字典檢視2011-07-29Oracle
- 資料字典2015-07-16
- 調整字典2024-04-02
- 字典樹(Trie)2024-07-09
- 字典樹Trie2024-11-12
- 【機器學習】梯度下降 II2020-09-20機器學習梯度
- USACO GCD Extreme(II)2016-08-21GCREM
- Meeting Rooms II2016-09-11OOM
- 設計模式II2024-06-24設計模式
- Collecting Numbers II2024-07-31
- 黑客+馬拉松=? 黑客馬拉松?2022-03-01黑客
- 黑客日記 黑客探路狗ReconDog2017-10-14黑客
- [PHP] 黑客2019-08-19PHP黑客
- 【PHP】黑客2019-08-19PHP黑客
- 極限limit2024-11-11MIT
- php無限級分類函式(無極限)2021-09-09PHP函式