易語言------精科電腦算命V3.4版註冊演算法分析
n久以前寫的.有些東西已經記不住了.呵呵
沒完過易語言的東東,第一次玩,找了個軟柿子捏捏。寫出來和大家共享,這個軟體的演算法不難.沒其他意思,僅供共享經驗而已
在開始分析之前寫上我的一點心得:對於易語言的東東。程式執行起來向加了一層殼一樣,一切都在庫裡面進行.你如果用OD載入,不執行程式,就開始查詢程式中的某些地址,是找不到的,例如本軟體的關鍵48C00F處。還有易語言的庫程式。而對於易語言,其實一個萬能斷點是GetWindowTextA(個人認為)。因為系統會用這個函式進行其他的操作,所以有可能你在此設斷時,並不是你要的東西。這時我得做法是先將OD視窗話,在設斷,觀察EAX中的值(怎麼用體會一下就知道了)。還有一個特點就是易語言好像喜歡用浮點運算。如果當程式註冊失敗時,出現註冊失敗提示的話,那麼他又保露了一點,那就是MessageBoxA函式。也可在這個函式上設斷,等斷在這裡之後,用F8單步,看看堆疊區裡,看見你輸入的東西了馬。這時可以用記憶體斷點,來跟蹤達到特殊效果。至於如何設斷點,我建議的做法是,當程式執行起來之後用Ctrl+F,來查詢1000000地址,這裡就是易語言的庫函式空間。然後用搜尋當前模組中的函式,就可以找到相應的函式。這樣比直接用BP下斷點感覺好一點。可以避免在系統庫中轉。以上僅是我在分析易語言程式時候的一點心得,至於具體效果如何,各位可以試試,不正確之處,還希望大家指出。。申明這個方法不是萬金油!
0048BEE2 55 PUSH EBP 在這裡設斷
0048BEE3 8BEC MOV EBP,ESP
0048BEE5 81EC 24000000 SUB ESP,24
0048BEEB C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
下面是一段浮點運算
0048BEF2 DB05 6C050D01 FILD DWORD PTR DS:[10D056C]取機器碼的後幾位
例如我得機器碼是CD1119312,取1119312入棧
0048BEF8 DD5D F4 FSTP QWORD PTR SS:[EBP-C]
FSTP 的功能st(0)儲存倒DEST (mem32/mem64/mem80);然後再執行一次出棧操作
0048BEFB DD45 F4 FLD QWORD PTR SS:[EBP-C]
FLD src 裝入實數到st(0) st(0) <- src (mem32/mem64/mem80)
將1119312到ST0
0048BEFE DC05 837C4500 FADD QWORD PTR DS:[457C83]
00457C83中的資料為16575065.00000000這裡他是怎麼計算出來的我沒跟出來後來才知道原來是程式中固定的
上一句的作用是將1119312和16575065相加
0048BF04 DD5D F4 FSTP QWORD PTR SS:[EBP-C] 入st7
0048BF07 DD45 F4 FLD QWORD PTR SS:[EBP-C] 裝入到s’t0做下一次加法
0048BF0A DC25 8B7C4500 FSUB QWORD PTR DS:[457C8B]
取00457C83處的值 2256.000000000000 做減法 這裡也是程式中固定的
0048BF10 DD5D EC FSTP QWORD PTR SS:[EBP-14]
0048BF13 DD45 EC FLD QWORD PTR SS:[EBP-14]
0048BF16 DC05 937C4500 FADD QWORD PTR DS:[457C93]
取00457C93的值1948.291666666667做加法 程式中固定的值
0048BF1C DD5D E4 FSTP QWORD PTR SS:[EBP-1C]
0048BF1F 68 01030080 PUSH 80000301
0048BF24 6A 00 PUSH 0
0048BF26 68 BB184D00 PUSH 4D18BB
0048BF2B DD45 E4 FLD QWORD PTR SS:[EBP-1C] 裝入實數到st0
0048BF2E E8 7028FEFF CALL jksm.0046E7A3
0048BF33 68 01030080 PUSH 80000301
0048BF38 6A 00 PUSH 0
0048BF3A 50 PUSH EAX
0048BF3B 68 02000000 PUSH 2
0048BF40 BB CC000000 MOV EBX,0CC
0048BF45 E8 F1370000 CALL jksm.0048F73B
略調一部分
0048BFD5 53 PUSH EBX
0048BFD6 E8 6C370000 CALL jksm.0048F747
0048BFDB 83C4 04 ADD ESP,4
0048BFDE DB45 FC FILD DWORD PTR SS:[EBP-4] 裝入正確的密碼
0048BFE1 DD5D E4 FSTP QWORD PTR SS:[EBP-1C]
0048BFE4 DD45 EC FLD QWORD PTR SS:[EBP-14] 裝入錯誤的密碼
0048BFE7 DC65 E4 FSUB QWORD PTR SS:[EBP-1C] 相減
注意下面這些浮點指令很煩的
0048BFEA D9E4 FTST 零檢測將ST0與0。0比較,看上面的結果是否為0
0048BFEC DFE0 FSTSW AX 儲存狀態子到AX
0048BFEE F6C4 01 TEST AH,1
0048BFF1 74 02 JE SHORT jksm.0048BFF5
0048BFF3 D9E0 FCHS 改變符號
0048BFF5 DC1D 49DE4100 FCOMP QWORD PTR DS:[41DE49]
0048BFFB DFE0 FSTSW AX
0048BFFD F6C4 41 TEST AH,41
0048C000 B8 00000000 MOV EAX,0
0048C005 0F95C0 SETNE AL 不等於0或者不相等時置OPRD為1
0048C008 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
0048C00B 837D E4 01 CMP DWORD PTR SS:[EBP-1C],1
0048C00F 0F85 0A000000 JNZ jksm.0048C01F 這裡如果跳走的話就失敗了
0048C015 E8 65000000 CALL jksm.0048C07F 這個call是計算註冊碼的跟進
0048C07F 55 PUSH EBP
0048C080 8BEC MOV EBP,ESP
0048C082 81EC 20000000 SUB ESP,20
0048C088 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0048C08F C745 F8 00000000 MOV DWORD PTR SS:[EBP-8],0
0048C096 68 04000080 PUSH 80000004
0048C09B 6A 00 PUSH 0
0048C09D 68 23A84200 PUSH jksm.0042A823
0048C0A2 68 01000000 PUSH 1
0048C0A7 BB 64010000 MOV EBX,164
0048C0AC E8 8A360000 CALL jksm.0048F73B
0048C0B1 83C4 10 ADD ESP,10
0048C0B4 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0048C0B7 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
0048C0BA DD05 3CA84200 FLD QWORD PTR DS:[42A83C] 估計這裡的值也是固定的 0042A83C中 44353402.00000000
0048C0C0 DC65 F0 FSUB QWORD PTR SS:[EBP-10]
0048C0C3 DD5D E8 FSTP QWORD PTR SS:[EBP-18]
0048C0C6 DD45 E8 FLD QWORD PTR SS:[EBP-18] 將上面的值裝入ST0
0048C0C9 E8 D526FEFF CALL jksm.0046E7A3 這個CALL將他轉化成十六進位制值1
0048C0CE 68 01030080 PUSH 80000301
0048C0D3 6A 00 PUSH 0
0048C0D5 50 PUSH EAX
0048C0D6 68 01030080 PUSH 80000301
0048C0DB 6A 00 PUSH 0
0048C0DD FF35 6C050D01 PUSH DWORD PTR DS:[10D056C]
0048C0E3 68 02000000 PUSH 2
0048C0E8 BB CC000000 MOV EBX,0CC
0048C0ED E8 49360000 CALL jksm.0048F73B 這裡是計算註冊碼的關鍵跟進去發現程式的作用是將上面的值1與一個固定的值0x111450進行異或運算
0048C0F2 83C4 1C ADD ESP,1C
0048C0F5 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
略調一部分
0048C142 74 09 JE SHORT jksm.0048C14D
0048C144 53 PUSH EBX
0048C145 E8 FD350000 CALL jksm.0048F747
0048C14A 83C4 04 ADD ESP,4 上面程式碼將輸入的假碼轉化成浮點形式
0048C14D DD45 EC FLD QWORD PTR SS:[EBP-14]
0048C150 E8 4E26FEFF CALL jksm.0046E7A3 將浮點值轉化成十六進位制
0048C155 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0048C158 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048C15B 3945 F8 CMP DWORD PTR SS:[EBP-8],EAX 這裡比較十六進位制
0048C15E 0F85 5D040000 JNZ jksm.0048C5C1 跳走則失敗
程式兩次計算時都呼叫了這個地方
100513F0 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
100513F4 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
100513F8 83F8 01 CMP EAX,1
100513FB 8B0A MOV ECX,DWORD PTR DS:[EDX]
100513FD 7E 2F JLE SHORT krnln.1005142E
100513FF 56 PUSH ESI
10051400 8B7424 08 MOV ESI,DWORD PTR SS:[ESP+8]
10051404 57 PUSH EDI
10051405 8D78 FF LEA EDI,DWORD PTR DS:[EAX-1]
10051408 8BC6 MOV EAX,ESI
1005140A 83C2 0C ADD EDX,0C
1005140D 83E8 00 SUB EAX,0
10051410 74 0E JE SHORT krnln.10051420
10051412 48 DEC EAX
10051413 74 07 JE SHORT krnln.1005141C
10051415 48 DEC EAX
10051416 75 0A JNZ SHORT krnln.10051422
10051418 330A XOR ECX,DWORD PTR DS:[EDX]
這裡是計算密碼和註冊碼的關鍵 做一次異或運算就出來了
1005141A EB 06 JMP SHORT krnln.10051422
1005141C 0B0A OR ECX,DWORD PTR DS:[EDX]
1005141E EB 02 JMP SHORT krnln.10051422
10051420 230A AND ECX,DWORD PTR DS:[EDX]
10051422 4F DEC EDI
10051423 ^75 E3 JNZ SHORT krnln.10051408
10051425 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
總結:程式先根據取得的安裝號,計算出密碼,只有密碼正確才驗證註冊碼,兩個都正確則註冊成功如果,只有密碼正確程式會給出相應的提示,但是這裡由於和密碼錯誤的提示不同,很容易給破解留下伏筆。這個軟體破解很容易。
註冊資訊儲存在:HKEY_CURRENT_UESRSOFTWAREJSMKKLOGIN裡刪掉該鍵值可重新註冊
相關文章
- 通用電腦語音系統(V-2000版)註冊碼分析2000-12-02
- 財智老闆通3.04註冊版---註冊演算法分析2003-03-16演算法
- 快速搭建TC、易語言、按鍵註冊碼系統2015-12-31
- 網路精確時鐘 2.25註冊演算法分析2003-07-30演算法
- supercleaner註冊演算法分析2015-11-15演算法
- 先馬易大師精鋼版機箱怎麼樣?先馬易大師精鋼版電腦機箱評測2020-06-30
- mac電腦統計分析繪圖軟體Prism 10 for Mac註冊啟用版下載2023-11-27Mac繪圖
- 簡易C語言文法分析2020-04-04C語言
- SpeedFlash註冊演算法分析(VB)2015-11-15演算法
- 【電腦科學】演算法——遞迴2020-03-06演算法遞迴
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- 東晨庫管網路版 6.5註冊演算法分析2003-08-14演算法
- 零基礎如何製作易語言網路驗證註冊碼系統?2015-12-28
- Topaz Video AI 註冊碼破解版:Mac電腦影片處理工具2024-01-04IDEAIMac
- XnViewMP 註冊碼啟用版:mac電腦強大的看圖軟體2023-12-13ViewMac
- 《超級小精靈》Ver 1.00共享版的註冊分析 (15千字)2001-02-10
- 易語言3.5很暗的暗樁分析:)2015-11-15
- Screen Demo Maker 3.0 註冊演算法分析2003-07-15演算法
- <<Anti-Hack>> 2.0註冊演算法分析2003-06-06演算法
- Personal Antispy 1.14 註冊演算法分析2015-11-15演算法
- 冰盾濾鏡註冊演算法分析2015-11-15演算法
- Mac電腦 Tower v10.3註冊啟用版 Git客戶端2024-01-29MacGit客戶端
- 迷你網路電視5.1註冊演算法2003-07-04演算法
- DLL Show V4.4 註冊演算法分析2015-11-15演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- 程式語言對比手冊-縱向版[-類-]2019-03-02
- HappyEO電子琴3.05標準版註冊演算法分析(重啟驗證,簡單,給初學者)2015-11-15APP演算法
- mac電腦版好用的cad軟體:AutoCAD 2023 註冊啟用中文版2023-05-09Mac
- 電腦科學中最重要的32個演算法2012-09-01演算法
- 蘋果mac電腦VJ音影片軟體推薦:Resolume Arena 7註冊啟用版中文2023-12-19蘋果Mac
- E族百變桌面6.0註冊演算法分析2015-11-15演算法
- FolderView 1.7
註冊演算法分析 (14千字)2015-11-15View演算法
- 優軟精靈畫筆之大天使3.0註冊演算法分析及KeyGen (3千字)2001-11-10演算法
- 電腦科學自學指南2018-12-22
- 電腦科學箴言集2011-09-13箴言
- ffmpeg分析系列之一(註冊該註冊的)2010-11-04
- LanSee 註冊演算法2015-11-15演算法
- 易語言進階2017-12-04