Image to PDF演算法分析(菜鳥文章)
軟體名稱:Image to PDF V2.2.0
下載地址:http://www.adultpdf.com/products/image2pdf/index.htm
軟體大小:1.94M
軟體簡介:可將各種圖形檔案轉換成一個PDF檔案
註冊限制:未註冊版生成的PDF檔案裡有被打上了未註冊的資訊
破解者: fengxu
作者申明:對CRACK感興趣,以學習為目的,別無他意。
破解工具:PEiD0.9,AspackDie1.41,Dede3.5, Ollydbg1.10c
-----------------------------------------------------------
破解過程
首先用PEiD檢測發現是ASPack2.12的殼,用AspackDie脫殼成功。執行脫殼後程式,可以正常執行。
再次用PEiD檢測脫殼後程式,發現是用BCB編寫的程式。於是用Dede調入程式,反編譯後可以很容易
找到註冊對話方塊OK按鈕所對應的事件Button2Click程式的入口地址:0040BAA0.
OK, 現在需要動態除錯了,啟動OD,載入並執行程式。出現註冊視窗,輸入:
email: fengxu@mymail.com
serial No.: 78787878
切換到OD, 下斷點:bp 0040BAA0
返回程式,點選ok,程式被OD中斷再0040BAA0.
0040BAA0 /. 55 PUSH EBP
0040BAA1 |. 8BEC MOV EBP,ESP
0040BAA3 |. 83C4 B8 ADD ESP,-48
0040BAA6 |. 53 PUSH EBX
0040BAA7 |. 56 PUSH ESI
0040BAA8 |. 57 PUSH EDI
0040BAA9 |. 8BD8 MOV EBX,EAX
0040BAAB |. BE B7BE4D00 MOV ESI,unpacked.004DBEB7
0040BAB0 |. 8D7D CC LEA EDI,DWORD PTR SS:[EBP-34]
0040BAB3 |. B8 9CC14D00 MOV EAX,unpacked.004DC19C
0040BAB8 |. E8 A7E00B00 CALL unpacked.004C9B64
0040BABD |. 66:C747 10 14>MOV WORD PTR DS:[EDI+10],14
0040BAC3 |. 33D2 XOR EDX,EDX
0040BAC5 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
0040BAC8 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
0040BACB |. FF47 1C INC DWORD PTR DS:[EDI+1C]
0040BACE |. 8B83 28050000 MOV EAX,DWORD PTR DS:[EBX+528]
0040BAD4 |. E8 F34D0600 CALL unpacked.004708CC ;取EMAIL地址
0040BAD9 |. 66:C747 10 08>MOV WORD PTR DS:[EDI+10],8
0040BADF |. 66:C747 10 20>MOV WORD PTR DS:[EDI+10],20
0040BAE5 |. 33C9 XOR ECX,ECX
0040BAE7 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
0040BAEA |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0040BAED |. FF47 1C INC DWORD PTR DS:[EDI+1C]
0040BAF0 |. 8B83 08050000 MOV EAX,DWORD PTR DS:[EBX+508]
0040BAF6 |. E8 D14D0600 CALL unpacked.004708CC ;取輸入的序列號
0040BAFB |. 66:C747 10 08>MOV WORD PTR DS:[EDI+10],8
0040BB01 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ;地址為NULL?
0040BB05 |. 8D4D B8 LEA ECX,DWORD PTR SS:[EBP-48]
0040BB08 |. 74 05 JE SHORT unpacked.0040BB0F ;是則跳轉
0040BB0A |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0040BB0D |. EB 03 JMP SHORT unpacked.0040BB12
0040BB0F |> 8D56 1C LEA EDX,DWORD PTR DS:[ESI+1C]
0040BB12 |> 8BC3 MOV EAX,EBX
0040BB14 |. E8 A3050000 CALL unpacked.0040C0BC ;關鍵call
0040BB19 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 ;序列號為NULL?
0040BB1D |. 74 05 JE SHORT unpacked.0040BB24 ;是則跳
0040BB1F |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
0040BB22 |. EB 03 JMP SHORT unpacked.0040BB27
0040BB24 |> 8D56 1D LEA EDX,DWORD PTR DS:[ESI+1D]
0040BB27 |> 8BC3 MOV EAX,EBX
0040BB29 |. E8 6E080000 CALL unpacked.0040C39C
0040BB2E |. 84C0 TEST AL,AL
0040BB30 |. 0F85 97000000 JNZ unpacked.0040BBCD
0040BB36 |. 6A 10 PUSH 10
0040BB38 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
0040BB3C |. 74 05 JE SHORT unpacked.0040BB43
0040BB3E |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
0040BB41 |. EB 03 JMP SHORT unpacked.0040BB46
0040BB43 |> 8D4E 1E LEA ECX,DWORD PTR DS:[ESI+1E]
0040BB46 |> 51 PUSH ECX
0040BB47 |. 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
0040BB4A |. 50 PUSH EAX
到這裡我們可以看到 ECX對應的是我們輸入的字串“78787878",而EAX則對應著一串讓人敢興趣的
字串"ECVHHWK8P5MQHV3D",是不是明碼比較呢?
0040BB4B |. E8 C8DE0B00 CALL unpacked.004C9A18
0040BB50 |. 83C4 0C ADD ESP,0C
0040BB53 |. 85C0 TEST EAX,EAX
0040BB55 |. 74 76 JE SHORT unpacked.0040BBCD ;若跳則顯示註冊透過,否則
;提示出錯
看來前面的兩個字串應該是進行序列號比較了。DISABLE所有斷點,進入註冊畫面,
在序列號中輸入ECVHHWK8P5MQHV3D,點選OK,提示註冊成功。
因此得到一組正確的序列號:
email: fengxu@mymail.com
serial No.: ECVHHWK8P5MQHV3D
下面我們來看看其註冊碼是怎樣生成的:f7進入關鍵call 0040C0BC, f8一路來到這裡:
0040C0EE |. BE 93BE4D00 MOV ESI,unpacked.004DBE93 ;ASCII
;"PX4VUTE8Q1YONML6GIHJZFSDCBA9R7K5W32"
0040C0F3 |. 8D7C24 08 LEA EDI,DWORD PTR SS:[ESP+8]
0040C0F7 |. B9 09000000 MOV ECX,9
0040C0FC |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
0040C0FE |. 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C]
0040C102 |. 50 PUSH EAX ; /Arg1
0040C103 |. E8 C80D0000 CALL unpacked.0040CED0 ; \unpacked.0040CED0
ESI對應的字串是一張資料表,下面會用到,用來生成序列號。f7進入40CED0:
0040CED0 /$ 55 PUSH EBP
0040CED1 |. 8BEC MOV EBP,ESP
0040CED3 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040CED6 |. 33D2 XOR EDX,EDX
0040CED8 |. 8950 14 MOV DWORD PTR DS:[EAX+14],EDX
0040CEDB |. 8950 10 MOV DWORD PTR DS:[EAX+10],EDX
0040CEDE |. C700 01234567 MOV DWORD PTR DS:[EAX],67452301
0040CEE4 |. C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89
0040CEEB |. C740 08 FEDCB>MOV DWORD PTR DS:[EAX+8],98BADCFE
0040CEF2 |. C740 0C 76543>MOV DWORD PTR DS:[EAX+C],10325476
0040CEF9 |. 5D POP EBP
0040CEFA \. C3 RETN
上面的賦值語句顯示這裡用了MD5演算法。
繼續:
0040C138 |. 8D9C24 840000>LEA EBX,DWORD PTR SS:[ESP+84]
0040C13F |> 33C0 /XOR EAX,EAX
0040C141 |. 8A03 |MOV AL,BYTE PTR DS:[EBX]
檢視EBX處的資料為:B518037B5843870723F1307112498AC6
將EMAIL地址輸入MD5運算器算一下,兩者完全一樣。
0040C143 |. B9 23000000 |MOV ECX,23
0040C148 |. 99 |CDQ
0040C149 |. F7F9 |IDIV ECX ;除以0x23,即前面提到的資料表長度
0040C14B |. 33C0 |XOR EAX,EAX
0040C14D |. 8A4414 08 |MOV AL,BYTE PTR SS:[ESP+EDX+8] ;取餘數,查表
0040C151 |. 50 |PUSH EAX ; /<%c>
0040C152 |. 68 C7C04D00 |PUSH unpacked.004DC0C7 ; |Format = "%c"
0040C157 |. 8D5424 08 |LEA EDX,DWORD PTR SS:[ESP+8] ; |
0040C15B |. 52 |PUSH EDX ; |s
0040C15C |. E8 F99F0C00 |CALL <JMP.&USER32.wsprintfA> ; \wsprintfA
0040C161 |. 83C4 0C |ADD ESP,0C
0040C164 |. 8A0C24 |MOV CL,BYTE PTR SS:[ESP]
0040C167 |. 880E |MOV BYTE PTR DS:[ESI],CL ;儲存結果
0040C169 |. 47 |INC EDI
0040C16A |. 46 |INC ESI
0040C16B |. 43 |INC EBX
0040C16C |. 83FF 10 |CMP EDI,10 ;迴圈次數
0040C16F |.^ 7C CE \JL SHORT unpacked.0040C13F
0040C171 |. C645 11 00 MOV BYTE PTR SS:[EBP+11],0
演算法總結:
使用資料表:PX4VUTE8Q1YONML6GIHJZFSDCBA9R7K5W32
將輸入的EMAIL地址進行MD5加密,將加密結果的每個位元組除以資料表長度0X23,
取餘數,將餘數作為指標查資料表得到序列號。序列號長度為16位字元。
相關文章
- SuperCleaner演算法分析----菜鳥級
(12千字)2015-11-15演算法
- HotkeyMaster演算法分析----菜鳥級
(4千字)2015-11-15AST演算法
- 鳥哥的Linux私房菜 -- 電子書(pdf)2019-03-09Linux
- 菜鳥裹裹App分析系列-產品分析2018-07-26APP
- 【演算法】演算法菜鳥的爛筆頭2019-03-30演算法
- [演算法] 演算法菜鳥的爛筆頭2019-03-30演算法
- 菜鳥裹裹App分析系列-UI框架設計分析2019-03-04APPUI框架
- 註冊碼演算法入門!----菜鳥篇2015-11-15演算法
- JVM菜鳥進階高手之路十四:分析篇2017-11-27JVM
- 菜鳥破解錄自之 Dialup Constructor 及演算法分析
(6千字)2000-09-11Struct演算法
- Linux“菜鳥”到“菜鳥的一些建議2020-10-15Linux
- 菜鳥破解錄之 GIF Construction Set Pro及演算法分析
(8千字)2000-09-01Struct演算法
- 【原創】菜鳥也演算法分析 -- 區域網檢視工具(LanSee V1.522015-11-15演算法
- 菜鳥看前端(Git)2020-11-21前端Git
- java菜鳥入門2020-10-16Java
- Python菜鳥--模組2016-11-02Python
- 菜鳥學Java(二十三)——Java記憶體分析2014-11-30Java記憶體
- 無論是菜鳥還是高手,這招PDF轉Word技巧必須Get2018-07-16
- Linux菜鳥到老鳥的那些建議2020-10-15Linux
- WPF open image and print as pdf file2024-07-03
- 遊戲菜鳥張一鳴2020-12-07遊戲
- IT菜鳥的學習生活2012-06-08
- 《誰說菜鳥不會資料分析》高清PDF全綵版|百度網盤免費下載|Python資料分析2020-07-27Python
- ultimate zip cracker6.2破解小結,菜鳥文章,高手勿看。
(1千字)2000-10-07
- React菜鳥入門之setState2019-03-01React
- 菜鳥理解的區塊鏈2019-01-16區塊鏈
- ESlint-菜鳥入門2018-11-16EsLint
- 跟著菜鳥學python2020-11-13Python
- 菜鳥也裝Linux(轉)2022-03-23Linux
- 菜鳥的架構師之路2018-06-27架構
- 菜鳥成長系列-策略模式2018-05-05模式
- 菜鳥的讀書筆記2017-06-24筆記
- 核心菜鳥的成長之路2016-12-31
- 菜鳥學Java(十七)——Jboss瘦身2014-01-28Java
- MySQL索引基礎--菜鳥篇2014-01-03MySql索引
- 菜鳥學Java(十八)——異常2014-03-31Java
- 問個菜鳥-高手問題2005-01-25
- 鳥哥的 Linux 私房菜2006-11-14Linux