分析破解某個軟體公司出的理財東東! (14千字)
分析破解某個家庭理財東東 (加強版)
本人在很多地方看到過這個軟體的破解文獻,但好象大蝦們都沒有給出演算法分析,看來高手不屑一寫,所以只有我這種小菜來寫啦,呵呵~~~讓高手見笑了.
軟體簡介:這是某個公司出的家庭理財東東。破解它比較容易,適合初學者用來作練習題。
軟體下載:http://www.moneywise.com.cn/downcenter.htm
破解工具:FileInfo TRW 2000(帶FPU浮點外掛)
破解過程:
(1)先用Fi檢視軟體,發現軟體沒有加殼。(呵呵~~~真是個練手的好機會,不用脫殼就能玩.)
(2)執行TRW,再把《這個家庭理財東東》軟體拖入TRW視窗,載入除錯後按CTR+N返回。
(3)填寫好註冊號碼,先隨便填寫。我的機器碼:8263-5933
我填的註冊碼:12345678
(4)按下CTR+N回到TRW中。在命令列,
輸入:bpx hmemcpy
回車 (用記憶體複製函式給它下斷點。)
輸入:bl
回車 (檢視下好的斷點是不是成功了)
按下:CTR+N
(返回《家庭理財東東》軟體,跟蹤函式的呼叫)
(5)按下注冊面版“完成註冊”鍵。
(6)這時,回到了TRW視窗。表明《這個家庭理財東東》程式呼叫了hmemcpy(記憶體複製函式),跟蹤成功了。
在命令列,
輸入:bc
回車 (撤消斷點)
輸入:pmodule
回車 (函式回到程式《家庭理財東東》領空)
這時,大家會看到一段如下的匯篇程式碼:
017F:004C5618 8B45FC
MOV EAX,[EBP-04]
017F:004C561B E850F8FFFF
CALL 004C4E70 (這個call很關鍵)
017F:004C5620 84C0 TEST
AL,AL
017F:004C5622 744F JZ
004C5673 (關鍵跳轉)
呵呵~~在此處改跳轉,就可以把該軟體爆破,但僅僅這樣做我們是不會滿意的,難到不是嗎?呵呵~~找出演算法並寫出序號產生器才是我們追求的最終目標。
017F:004C5624 A130EF6600 MOV EAX,[0066EF30]
017F:004C5629 8B00 MOV
EAX,[EAX]
017F:004C562B 8B55FC MOV
EDX,[EBP-04]
繼續再往下走,就會跳出出錯對話方塊。
(7)來到 017F:004C561B E850F8FFFF CALL
004C4E70 中,我們來分析作者的求註冊碼演算法分析思路。
我們會看到一段如下的匯篇程式碼:
………………此處省略了一些無關緊要的彙編程式碼………………
017F:004C4E93 8D45F4 LEA
EAX,[EBP-0C] (把所填的註冊碼放到EAX中)
017F:004C4E96 E831FFFFFF
CALL 004C4DCC (透過這個CALL取了機器碼:8263-5933
)
017F:004C4E9B 8B45F4 MOV
EAX,[EBP-0C]
017F:004C4E9E 8D55F8
LEA EDX,[EBP-08]
017F:004C4EA1 E846FFFFFF
CALL 004C4DEC
017F:004C4EA6
8B45F8 MOV EAX,[EBP-08]
( 在EAX中有註冊碼4339-4142)
017F:004C4EA9 E8FAFCFFFF
CALL 004C4BA8
017F:004C4EAE 8BD8
MOV EBX,EAX
017F:004C4EB0 8B45FC
MOV EAX,[EBP-04]
017F:004C4EB3 E8F0FCFFFF CALL 004C4BA8
017F:004C4EB8 85C0
TEST EAX,EAX
017F:004C4EBA 7504
JNZ 004C4EC0
017F:004C4EBC 33DB
XOR EBX,EBX
017F:004C4EBE
EB0A JMP SHORT 004C4ECA
017F:004C4EC0 3BC3 CMP
EAX,EBX
017F:004C4EC2 7504
JNZ 004C4EC8
017F:004C4EC4 B301
MOV BL,01
017F:004C4EC6 EB02
JMP SHORT 004C4ECA
017F:004C4EC8
33DB XOR EBX,EBX
017F:004C4ECA 33C0 XOR
EAX,EAX
017F:004C4ECC 5A
POP EDX
017F:004C4ECD 59
POP ECX
017F:004C4ECE 59
POP ECX
017F:004C4ECF
648910 MOV [FS:EAX],EDX
017F:004C4ED2 68EC4E4C00 PUSH DWORD 004C4EEC
017F:004C4ED7 8D45F4 LEA
EAX,[EBP-0C]
017F:004C4EDA BA03000000 MOV
EDX,03
017F:004C4EDF E8FCF0F3FF CALL
00403FE0
017F:004C4EE4 C3
RET
(8)呵呵~~在:017F:004C4EA6 8B45F8
MOV EAX,[EBP-08] 的 EAX我們看到了註冊碼,說明在上面的: 017F:004C4EA1
E846FFFFFF CALL 004C4DEC 中大有蹊蹺,我們跟進去瞧瞧。
017F:004C4E0F 8B45FC MOV
EAX,[EBP-04]
017F:004C4E12 E891FDFFFF CALL
004C4BA8
017F:004C4E17 8BD8 MOV
EBX,EAX 發現(EAX=000E8D1C)
017F:004C4E19
85DB TEST EBX,EBX
017F:004C4E1B
7509 JNZ 004C4E26
017F:004C4E1D 8BC6 MOV
EAX,ESI
(9)不難發現,我們在004C4E17中發現了一個可疑的數EAX=E8D1C,暫且不管他,我們繼續往下看:
………………此處省略了一些無關緊要的彙編程式碼………………
017F:004C4E0F 8B45FC
MOV EAX,[EBP-04]
017F:004C4E12 E891FDFFFF
CALL 004C4BA8
017F:004C4E17 8BD8
MOV EBX,EAX
(注意此處的EAX=000E8D1C)
017F:004C4E19 85DB
TEST EBX,EBX
017F:004C4E1B 7509
JNZ 004C4E26
017F:004C4E1D
8BC6 MOV EAX,ESI
017F:004C4E1F E898F1F3FF CALL 00403FBC
017F:004C4E24 EB27 JMP
SHORT 004C4E4D
017F:004C4E26 2B1DD0B96600 SUB
EBX,[0066B9D0] (將EBX-34B263C=FCC366E0放入EBX中)
017F:004C4E2C
895DF4 MOV [EBP-0C],EBX
017F:004C4E2F 33C0 XOR
EAX,EAX
017F:004C4E31 8945F8 MOV
[EBP-08],EAX
017F:004C4E34 DF6DF4
FILD QWORD [EBP-0C] (將[ebp-0c]中的數放到浮點暫存器st)
017F:004C4E37 DC0DD4B96600 FMUL QWORD [0066B9D4]
(將st 乘於[0066b9d4]中的數,結果放到st 中)
017F:004C4E3D E8CEDEF3FF
CALL 00402D10
017F:004C4E42 8BD8
MOV EBX,EAX
017F:004C4E44 8BD6
MOV EDX,ESI
017F:004C4E46
8BC3 MOV EAX,EBX
017F:004C4E48 E867FCFFFF CALL 004C4AB4
017F:004C4E4D 33C0 XOR
EAX,EAX
017F:004C4E4F 5A
POP EDX
017F:004C4E50 59
POP ECX
哎~~EAX=E8D1C 很可疑呀,後來還對它進行了浮點運算,那我們不妨跟到004C4E12這個CALL中去逛逛.
(10)這時可要仔細觀察呀,看看有什麼“新大陸”沒有!
017F:004C4C15 E88251F4FF
CALL 00409D9C
017F:004C4C1A 33C9
XOR ECX,ECX
017F:004C4C1C
33F6 XOR ESI,ESI
017F:004C4C1E B806000000 MOV EAX,06
(把06放入EAX中)
017F:004C4C23 8B55F8
MOV EDX,[EBP-08]
(把機器碼:82635933放入EDX)
017F:004C4C26 0FB65402FF
MOVZX EDX,BYTE [EDX+EAX-01](取機器碼:82635933數中的倒數第三個數9放到EDX)
017F:004C4C2B 83EA30 SUB
EDX,BYTE +30 (39-30=9)
017F:004C4C2E 03F2
ADD ESI,EDX
(把9放到ESI中)
017F:004C4C30 03C9
ADD ECX,ECX
017F:004C4C32 8D0C89
LEA ECX,[ECX+ECX*4] (把[ECX+ECX*4]的偏移地址放入ECX中)
017F:004C4C35 03D1 ADD
EDX,ECX (EDX與ECX相加,再把數值放到EDX中)
017F:004C4C37 8BCA MOV
ECX,EDX (把EDX中的數放到ECX中)
017F:004C4C39 48 DEC
EAX
(EAX減1,作為條件來實現一個迴圈)
017F:004C4C3A 85C0
TEST EAX,EAX
(異或EAX,標誌位作為下面跳轉的條件)
017F:004C4C3C 75E5
JNZ 004C4C23
(為1則跳轉,為0則不會跳轉)迴圈了6次
017F:004C4C3E 33D2
XOR EDX,EDX
017F:004C4C40 B808000000 MOV
EAX,08 (把08放入EAX中)
017F:004C4C45 03D2 ADD
EDX,EDX
017F:004C4C47
8D1492 LEA EDX,[EDX+EDX*4]
017F:004C4C4A 8B5DF8
MOV EBX,[EBP-08] (把機器碼82635933放入EBX)
017F:004C4C4D 0FB65C03FF MOVZX EBX,BYTE
[EBX+EAX-01](取機器碼:82635933數中的倒數第一個數3放到EBX)
017F:004C4C52 83EB30
SUB EBX,BYTE +30
(33-30=3)
017F:004C4C55 03D3
ADD EDX,EBX
(EDX與EBX相加,再把值放到EDX中)
017F:004C4C57 48
DEC EAX
(EAX減1)
017F:004C4C58 83F806
CMP EAX,BYTE +06 (用EAX-6得到的值來作為跳轉的條件)
017F:004C4C5B 75E8 JNZ
004C4C45 (為1則跳轉,為0則不會跳轉)迴圈了2次
017F:004C4C5D 3BF2 CMP
ESI,EDX (比較ESI與EDX的值)
017F:004C4C5F 7404 JZ
004C4C65
017F:004C4C61 33DB XOR
EBX,EBX (EAX清零)
017F:004C4C63 EB02 JMP
SHORT 004C4C67
017F:004C4C65 8BD9
MOV EBX,ECX
017F:004C4C67 33C0
XOR EAX,EAX
017F:004C4C69 5A
POP EDX
(EDX壓如棧)
017F:004C4C6A 59
POP ECX
(ECX壓如棧)
017F:004C4C6B 59
POP ECX
(ECX壓如棧)
017F:004C4C6C 648910
MOV [FS:EAX],EDX
017F:004C4C6F
68894C4C00 PUSH DWORD 004C4C89
017F:004C4C74
8D45F8 LEA EAX,[EBP-08]
017F:004C4C77 BA02000000 MOV EDX,02
017F:004C4C7C E85FF3F3FF CALL 00403FE0
017F:004C4C81 C3 RET
(11)呵呵,透過上面的分析,我們不難發現,作者程式中註冊碼的第一部分演算法是:把機器碼(我的機器碼是:82635933)從倒數第三個數取起,進行一系列的整除求餘運算,其中共迴圈6次,這時得到一個數(我的是:000E8D1C).這個數參加下一步的註冊碼運算.
我們這時跳出這個CALL,來到:
017F:004C4E24 EB27
JMP SHORT 004C4E4D 這個程式塊中,
我們接著來分析下一步的演算法.
017F:004C4E26
2B1DD0B96600 SUB EBX,[0066B9D0]
(將EBX-34B263C=FCC366E0放入EBX中)
017F:004C4E2C 895DF4
MOV [EBP-0C],EBX
017F:004C4E2F 33C0
XOR EAX,EAX
(EAX清零)
017F:004C4E31 8945F8
MOV [EBP-08],EAX
017F:004C4E34 DF6DF4
FILD QWORD [EBP-0C]
(將[ebp-0c]中的數放到浮點暫存器st)
017F:004C4E37 DC0DD4B96600 FMUL
QWORD [0066B9D4] (將st 乘於[0066b9d4]中的數,結果放到st 中)
017F:004C4E3D
E8CEDEF3FF CALL 00402D10
017F:004C4E42 8BD8
MOV EBX,EAX
(EAX=F018AE56放入EBX中)
017F:004C4E44 8BD6
MOV EDX,ESI
017F:004C4E46 8BC3
MOV EAX,EBX
017F:004C4E48
E867FCFFFF CALL 004C4AB4
可疑的CALL
017F:004C4E4D 33C0
XOR EAX,EAX
017F:004C4E4F 5A
POP EDX
(12)呵呵~~透過上面的浮點運算,我們得到:EAX=F018AE56 ,記下這個很重要的數字,我們來到前面說的那可疑的CALL前,然後按F8往裡走。
哈哈……來到“004C4E48 CALL 004C4AB4 ”可疑的CALL中仔細觀察後,我們發現勝利就在眼前。
017F:004C4AD8 E8DFF4F3FF CALL 00403FBC
017F:004C4ADD 33FF XOR
EDI,EDI
017F:004C4ADF BB06000000 MOV
EBX,06 (把06放入 EBX中,做計數器)
017F:004C4AE4 8B45FC MOV
EAX,[EBP-04] (把F018AE56放入EAX中)
017F:004C4AE7 B90A000000
MOV ECX,0A
(把0A放入ECX中,做為除數)
017F:004C4AEC 33D2
XOR EDX,EDX
(EDX清零)
017F:004C4AEE F7F1
DIV ECX
(EAX除ECX,餘數在EDX中)
017F:004C4AF0 8BF2
MOV ESI,EDX (把得到的餘數4放入ESI中)
017F:004C4AF2 03FE ADD
EDI,ESI (EDI+ESI結果放到EDI中)
017F:004C4AF4 8D45F0 LEA
EAX,[EBP-10] (把[EBP-10]的偏移地址放入EAX中)
017F:004C4AF7
8D5630 LEA EDX,[ESI+30]
(把[ESI+30]的偏移地址放入EAX中)
017F:004C4AFA E865F6F3FF
CALL 00404164
017F:004C4AFF 8B55F0 MOV
EDX,[EBP-10]
017F:004C4B02 8D45F4
LEA EAX,[EBP-0C] (把[EBP-0C]的偏移地址放入EAX中)
017F:004C4B05 E84AF7F3FF CALL 00404254
017F:004C4B0A 8B45FC MOV
EAX,[EBP-04] (把0A放入ECX中,做為除數)
017F:004C4B0D B90A000000
MOV ECX,0A
017F:004C4B12 33D2 XOR
EDX,EDX (EDX清零)
017F:004C4B14
F7F1 DIV ECX
(EAX除ECX,餘數在EDX中)
017F:004C4B16
8945FC MOV [EBP-04],EAX
017F:004C4B19 4B
DEC EBX
(用EBX-1的結果來作為迴圈的辨別條件)
017F:004C4B1A 75C8
JNZ 004C4AE4
(上面的結果為1則跳,為0則不跳)
這一段程式把透過第一部分運算得到的常數F018AE56進行了一系列的迴圈整除求餘運算,每迴圈一次,得到一位註冊碼。我透過運算依次得到的註冊碼為:4.3.3.9.4.1
017F:004C4B1C BB02000000 MOV EBX,02
(把02放入 EBX中,做計數器)
017F:004C4B21
8BC7 MOV EAX,EDI
(EDI中的數放到EAX中)
017F:004C4B23 B90A000000
MOV ECX,0A
(把0A放入ECX中,做為除數)
017F:004C4B28 33D2
XOR EDX,EDX
(EDX清零)
017F:004C4B2A F7F1
DIV ECX
(EAX除ECX,餘數在EDX中)
017F:004C4B2C 8BF2
MOV ESI,EDX (把EDX中的值放入ESI中)
017F:004C4B2E 8D45EC LEA
EAX,[EBP-14] (把[EBP-14]的偏移地址放入EAX中)
017F:004C4B31
8D5630 LEA EDX,[ESI+30]
(把[EBP+30]的偏移地址放入EAX中)
017F:004C4B34 E82BF6F3FF
CALL 00404164
017F:004C4B39 8B55EC
MOV EDX,[EBP-14]
017F:004C4B3C 8D45F4 LEA
EAX,[EBP-0C] (把[EBP-0C]的偏移地址放入EAX中)
017F:004C4B3F
E810F7F3FF CALL 00404254
017F:004C4B44 8BC7
MOV EAX,EDI
017F:004C4B46
B90A000000 MOV ECX,0A
(把0A放入ECX中,做為除數)
017F:004C4B4B 33D2
XOR EDX,EDX
(EDX清零)
017F:004C4B4D F7F1
DIV ECX
(EAX除ECX,餘數在EDX中)
017F:004C4B4F 8BF8
MOV EDI,EAX
017F:004C4B51 4B DEC
EBX (用EBX-1的結果來作為迴圈的辨別條件)
017F:004C4B52 75CD JNZ
004C4B21 (上面的結果為1則跳,為0則不跳)
這一段程式把上面運算得到的數ESI=18進行了迴圈整除求餘運算,每迴圈一次,得到一位註冊碼。我依次運算得到的註冊碼:4.2
017F:004C4B54
8D55F4 LEA EDX,[EBP-0C]
017F:004C4B57 B905000000 MOV ECX,05
017F:004C4B81 BA03000000 MOV EDX,03
017F:004C4B86 E855F4F3FF CALL 00403FE0
哈哈……跟蹤到這裡,我們也就發現了註冊碼的另一部分重要演算法了!
(13)呵呵~~~~~接下來我們看看程式最後還要做的事情:把算出的註冊碼4.3.3.9.4.1.4.2
換成另外一種形式“4339-4142”,這就是我的註冊碼。
透過整理這兩大部分的演算法分析,我們就能得到整個程式註冊碼的演算法了。哈哈……任務完成了!
作者學破解時間不長,不足處還望各位朋友給予指導和幫助,在此,作者先謝謝大家了!
歡迎各位破解愛好者來相互交流學習!Emial:bomber1949@sina.com
QQ:32069691
風塵(長沙)
2002年5月15日
相關文章
- 炒股理財1.65破解方法 (8千字)2001-04-13
- 一個超容易破解的軟體! (5千字)2001-01-21
- 兩個月的破解回顧以及7個軟體的破解! (3千字)2000-12-28
- 久其新某整合賬務核算軟體(14千字)2003-02-20
- 北京某知名軟體公司急聘專案經理2012-02-22
- 財智證券結算軟體2.5 破解註冊碼分析!使用ollydbg 破解註冊動畫!高手莫入! (1千字)2001-11-20動畫
- 一個典型的時間限制軟體的破解 (4千字)2001-01-29
- 破解一個CCG的軟體,改半位元組! (6千字)2002-01-27
- 某國產彩票V3.0軟體的演算法分析
(22千字)2015-11-15演算法
- 某軟體公司國產分析型資料庫選型方法論2023-11-24資料庫
- 炒股理財 v1.13破解實戰錄! (3千字)2000-08-24
- 財智系列破解 (3千字)2001-07-22
- 炒股理財演算法分析 (3千字)2001-03-31演算法
- SayMoney for Mac個人理財軟體2020-12-14Mac
- 炒股理財3.1 演算法分析(15千字)2015-11-15演算法
- 個人理財軟體安裝教程2020-12-29
- unix軟體ncftpd 2.7.1之破解(11千字)2002-04-07FTP
- 破解北京冠群金辰軟體公司出的資訊洩漏攔截(eTrust MailWatcher)1.0
版(installshield) (1千字)2001-02-18RustAI
- 《贏證股市分析軟體》V2.01 高階版的破解 (10千字)2001-05-08
- 如何破解掉vt4.0的軟體狗(一種醫藥用影像分析軟體) 不錯的文章
(7千字)2015-11-15
- 軟體 system menachinc 的它用(附:序列號破解)
(1千字)2000-03-19
- mago進來,要漢化的軟體己破解 (1千字)2000-07-05Go
- 英語全文朗讀軟體---破解 (1千字)2000-10-04
- 小弟的一篇湊數的破解文章,是小弟解決的第一個密碼學軟體!(爆破哈!)
(14千字)2002-09-29密碼學
- 把財務分析明白的BI軟體有哪些?2023-01-04
- 《卜運算元_權謀個人彩票分析助理軟體》V6.00的破解 (2千字)2001-05-13
- 破解webclaw――全憑眼力 (14千字)2001-05-21Web
- 菜鳥初鳴--最易破解的軟體 supercleaner (2千字)2001-10-11
- Installshield5.0反編譯破解軟體安裝序列號一例 (14千字)2015-11-15編譯
- 軟體破解初體驗之 MacroClip 2000.2.7 程式碼修改破解 (15千字)2001-10-09Mac
- 如何製作VB程式記憶體序號產生器--國內某軟體的序號產生器(隱去軟體資訊)
(14千字)2002-08-04記憶體
- Android 逆向 某視訊直播軟體,破解收費觀看2019-04-23Android
- 軟體破解2008-06-02
- 破解ACD Systems試用軟體的三步曲 (1千字)2000-03-04
- WebTimeSync 5.2.0 破解過程 (14千字)2001-10-05Web
- TDMD軟體狗破解方法(帶狗殺狗) (6千字)2001-10-25
- 新紀元財務、進銷存一體化軟體 (4千字)2001-04-21
- 我的第一個破解軟體,試驗成功!2013-12-26