PictureToTv 程式分析--請前輩指正
PictureToTV version1.0
cracker:essorg
tools:language2k探殼,trw2000pll跟蹤,c32asm1001截碼
level:0
language2k探殼,無殼,VC程式設計,載入trw2000pll,
執行軟體,出現註冊介面,點選馬上註冊。。。到填寫註冊資訊頁,使用者名稱及註冊碼必填,註冊碼16位(跟蹤結果)
使用者名稱:essorg
註冊碼:7878787878787878
Ctrl + N 撥出TRW,下 bpx hmemcpy,回到程式,點選下一步,中斷進入TRW除錯窗
017F:00466623 33DB XOR EBX,EBX
017F:00466625 8B45EC MOV EAX,[EBP-14]
017F:00466628 8B5064 MOV EDX,[EAX+64] 〈----輸入註冊碼地址;
017F:0046662B 8B4AF8 MOV ECX,[EDX-08] 〈----輸入註冊碼長度;
017F:0046662E 85C9 TEST ECX,ECX
017F:00466630 7E2F JNG 00466661 〈----輸入註冊碼長度為0;
017F:00466632 0FBE041A MOVSX EAX,BYTE [EDX+EBX] 〈----
017F:00466636 83F830 CMP EAX,BYTE +30 〈----
017F:00466639 7C05 JL 00466640 〈----
017F:0046663B 83F839 CMP EAX,BYTE +39 〈----篩選字元在0-9、
017F:0046663E 7E0A JNG 0046664A 〈----A-F之間,無效
017F:00466640 83F841 CMP EAX,BYTE +41 〈----字元刪除
017F:00466643 7C17 JL 0046665C 〈----
017F:00466645 83F846 CMP EAX,BYTE +46 〈----
017F:00466648 7F12 JG 0046665C 〈----
017F:0046664A 8D4DDC LEA ECX,[EBP-24] 〈----
017F:0046664D 50 PUSH EAX
017F:0046664E E899D70D00 CALL `MFC42!ord_000003AC`
017F:00466653 8B45EC MOV EAX,[EBP-14] 〈----恢復
017F:00466656 8B5064 MOV EDX,[EAX+64] 〈----初始
017F:00466659 8B4AF8 MOV ECX,[EDX-08] 〈----資訊;
017F:0046665C 43 INC EBX 〈----註冊碼下一位;
017F:0046665D 3BD9 CMP EBX,ECX 〈----比較有無篩選完,
017F:0046665F 7CD1 JL 00466632 〈----沒有則繼續;
017F:00466661 8B4DDC MOV ECX,[EBP-24] 〈----有效註冊碼地址
017F:00466664 8B41F8 MOV EAX,[ECX-08] 〈----有效註冊碼長度
017F:00466667 85C0 TEST EAX,EAX
017F:00466669 7E4A JNG 004666B5 〈----有效註冊碼長度為0,顯示註冊失敗
017F:0046666B 8B45EC MOV EAX,[EBP-14]
017F:0046666E 8B4060 MOV EAX,[EAX+60] 〈----Email地址
017F:00466671 8B50F8 MOV EDX,[EAX-08] 〈----輸入Email長度
017F:00466674 85D2 TEST EDX,EDX
017F:00466676 7E3D JNG 004666B5 〈----空輸入,顯示註冊失敗
017F:00466678 51 PUSH ECX 〈----輸入註冊碼地址
017F:00466679 50 PUSH EAX 〈----輸入Email地址
017F:0046667A E835FBFFFF CALL 004661B4 〈----比對核心
017F:0046667F 83C408 ADD ESP,BYTE +08
017F:00466682 85C0 TEST EAX,EAX
分析比對核心內容:
#########################################################################################
017F:004661B4 55 PUSH EBP
017F:004661B5 8BEC MOV EBP,ESP
017F:004661B7 6AFF PUSH BYTE -01
017F:004661B9 68DCBD5400 PUSH DWORD 0054BDDC
017F:004661BE 64A100000000 MOV EAX,`DOSMGR_BackFill_Allowed`
017F:004661C4 50 PUSH EAX
017F:004661C5 64892500000000 MOV `DOSMGR_BackFill_Allowed`,ESP
017F:004661CC 81EC9C000000 SUB ESP,9C
017F:004661D2 8965F0 MOV [EBP-10],ESP
017F:004661D5 897DE0 MOV [EBP-20],EDI
017F:004661D8 8975E4 MOV [EBP-1C],ESI
017F:004661DB 895DE8 MOV [EBP-18],EBX
017F:004661DE 8D8D58FFFFFF LEA ECX,[EBP+FFFFFF58]
017F:004661E4 FF7508 PUSH DWORD [EBP+08]
017F:004661E7 E8C6D60D00 CALL `MFC42!ord_00000219`
017F:004661EC C745FC00000000 MOV DWORD [EBP-04],00
017F:004661F3 8D8D58FFFFFF LEA ECX,[EBP+FFFFFF58]
017F:004661F9 E848E20D00 CALL `MFC42!ord_0000106A`
017F:004661FE 8D8D58FFFFFF LEA ECX,[EBP+FFFFFF58]
017F:00466204 6A40 PUSH BYTE +40
017F:00466206 E889E20D00 CALL `MFC42!ord_00000ACB`
017F:0046620B 83F8FF CMP EAX,BYTE -01
017F:0046620E 7522 JNZ 00466232
017F:00466210 C745FCFFFFFFFF MOV DWORD [EBP-04],FFFFFFFF
017F:00466217 8D8D58FFFFFF LEA ECX,[EBP+FFFFFF58]
017F:0046621D E8A8D60D00 CALL `MFC42!ord_00000320`
017F:00466222 33C0 XOR EAX,EAX
017F:00466224 8B4DF4 MOV ECX,[EBP-0C]
017F:00466227 64890D00000000 MOV `DOSMGR_BackFill_Allowed`,ECX
017F:0046622E 8BE5 MOV ESP,EBP
017F:00466230 5D POP EBP
017F:00466231 C3 RET
017F:00466232 8D8D5CFFFFFF LEA ECX,[EBP+FFFFFF5C]
017F:00466238 FF750C PUSH DWORD [EBP+0C]
017F:0046623B E872D60D00 CALL `MFC42!ord_00000219`
017F:00466240 C745FC01000000 MOV DWORD [EBP-04],01
017F:00466247 8B855CFFFFFF MOV EAX,[EBP+FFFFFF5C] 〈----有效註冊碼地址
017F:0046624D 8B50F8 MOV EDX,[EAX-08] 〈----有效註冊碼長度
017F:00466250 83FA10 CMP EDX,BYTE +10 〈----比較有效註冊碼是否是16位
017F:00466253 7434 JZ 00466289
017F:00466255 C745FC00000000 MOV DWORD [EBP-04],00
017F:0046625C 8D8D5CFFFFFF LEA ECX,[EBP+FFFFFF5C]
017F:00466262 E863D60D00 CALL `MFC42!ord_00000320`
017F:00466267 C745FCFFFFFFFF MOV DWORD [EBP-04],FFFFFFFF
017F:0046626E 8D8D58FFFFFF LEA ECX,[EBP+FFFFFF58]
017F:00466274 E851D60D00 CALL `MFC42!ord_00000320`
017F:00466279 33C0 XOR EAX,EAX
017F:0046627B 8B4DF4 MOV ECX,[EBP-0C]
017F:0046627E 64890D00000000 MOV `DOSMGR_BackFill_Allowed`,ECX
017F:00466285 8BE5 MOV ESP,EBP
017F:00466287 5D POP EBP
017F:00466288 C3 RET
017F:00466289 8D8D5CFFFFFF LEA ECX,[EBP+FFFFFF5C] 〈----前4位返回地址
017F:0046628F 8D8560FFFFFF LEA EAX,[EBP+FFFFFF60]
017F:00466295 6A04 PUSH BYTE +04
017F:00466297 50 PUSH EAX
017F:00466298 E83FD60D00 CALL `MFC42!ord_00001021` 〈----取字串前4位
017F:0046629D C745FC02000000 MOV DWORD [EBP-04],02
017F:004662A4 8D8D64FFFFFF LEA ECX,[EBP+FFFFFF64]
017F:004662AA 8D8560FFFFFF LEA EAX,[EBP+FFFFFF60]
017F:004662B0 50 PUSH EAX
017F:004662B1 E86AD70D00 CALL `MFC42!ord_00000217`
017F:004662B6 C745FC01000000 MOV DWORD [EBP-04],01
017F:004662BD C745FC03000000 MOV DWORD [EBP-04],03
017F:004662C4 8D8D60FFFFFF LEA ECX,[EBP+FFFFFF60]
017F:004662CA E8FBD50D00 CALL `MFC42!ord_00000320`
017F:004662CF 8D8D5CFFFFFF LEA ECX,[EBP+FFFFFF5C]
017F:004662D5 8D8568FFFFFF LEA EAX,[EBP+FFFFFF68]
017F:004662DB 6A04 PUSH BYTE +04
017F:004662DD 50 PUSH EAX
017F:004662DE E823D90D00 CALL `MFC42!ord_000010B5`
017F:004662E3 C745FC04000000 MOV DWORD [EBP-04],04
017F:004662EA 8D8D5CFFFFFF LEA ECX,[EBP+FFFFFF5C]
017F:004662F0 8D8568FFFFFF LEA EAX,[EBP+FFFFFF68] 〈----後12位地址
017F:004662F6 50 PUSH EAX
017F:004662F7 E8C8D50D00 CALL `MFC42!ord_0000035A`
017F:004662FC C745FC03000000 MOV DWORD [EBP-04],03
017F:00466303 8D8D68FFFFFF LEA ECX,[EBP+FFFFFF68]
017F:00466309 E8BCD50D00 CALL `MFC42!ord_00000320`
017F:0046630E 8D8D6CFFFFFF LEA ECX,[EBP+FFFFFF6C]
017F:00466314 6880CF6000 PUSH DWORD 0060CF80
017F:00466319 E894D50D00 CALL `MFC42!ord_00000219`
017F:0046631E C745FC05000000 MOV DWORD [EBP-04],05
017F:00466325 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:0046632B E8C8FFFEFF CALL 004562F8
[EBP+FFFFFF70]計算標尺內容:
[00A6F4FC]:01 23 45 67 89 AB CD EF - FE DC BA 98 76 54 32 10
[00A6F50C]:E8 00 00 00 00 00 00 00 - 37 38 37 38 65 73 73 6F
[00A6F51C]:72 67 40 31 36 33 2E 63 - 6F 6D 50 69 63 74 75 72
[00A6F52C]:65 54 6F 54 56 F5 A6 00
017F:00466330 8B8564FFFFFF MOV EAX,[EBP+FFFFFF64] 〈----前4位地址
017F:00466336 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:0046633C FF70F8 PUSH DWORD [EAX-08] 〈----前4位字元的長度
017F:0046633F 50 PUSH EAX
017F:00466340 E8D3F3FEFF CALL 00455718 -00457E3 根據標尺計算
017F:00466345 8B8558FFFFFF MOV EAX,[EBP+FFFFFF58] 〈----Email地址
017F:0046634B 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:00466351 FF70F8 PUSH DWORD [EAX-08] 〈----Email字元的長度
017F:00466354 50 PUSH EAX
017F:00466355 E8BEF3FEFF CALL 00455718
017F:0046635A 8B856CFFFFFF MOV EAX,[EBP+FFFFFF6C] 〈----PictureToTV地址
017F:00466360 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:00466366 FF70F8 PUSH DWORD [EAX-08] 〈----PictureToTV字元的長度
017F:00466369 50 PUSH EAX
017F:0046636A E8A9F3FEFF CALL 00455718
017F:0046636F 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:00466375 E88EF4FEFF CALL 00455808
017F:0046637A 8D8D70FFFFFF LEA ECX,[EBP+FFFFFF70]
017F:00466380 E823F5FEFF CALL 004558A8 將[00A6F4FC]16位資料複製到[00B945C0]
[00A6F578]:5A F7 AE 26 73 92 61 70 - C5 86 9F 22 F6 AB 2A 70
標尺6-12位與0-5位異或,置於0-5位
017F:00466385 8945EC MOV [EBP-14],EAX 將[00B945C0]16位資料複製到[00A6F578]
017F:00466388 33C9 XOR ECX,ECX
017F:0046638A 8B55EC MOV EDX,[EBP-14] 〈----[00A6F578]
017F:0046638D 8A441106 MOV AL,[ECX+EDX+06]
017F:00466391 300411 XOR [ECX+EDX],AL
017F:00466394 41 INC ECX
017F:00466395 83F906 CMP ECX,BYTE +06
017F:00466398 7CF0 JL 0046638A
標尺13-16位與0-3位異或,置於0-3位
017F:0046639A 33C9 XOR ECX,ECX
017F:0046639C 8B55EC MOV EDX,[EBP-14]
017F:0046639F 8A44110C MOV AL,[ECX+EDX+0C]
017F:004663A3 300411 XOR [ECX+EDX],AL
017F:004663A6 41 INC ECX
017F:004663A7 83F904 CMP ECX,BYTE +04
017F:004663AA 7CF0 JL 0046639C
017F:004663AC 8D4DDC LEA ECX,[EBP-24]
017F:004663AF E8F8D40D00 CALL `MFC42!ord_0000021C`
017F:004663B4 C745FC06000000 MOV DWORD [EBP-04],06
017F:004663BB 8B7DEC MOV EDI,[EBP-14] 〈----返回計算出“計算尺”地址
017F:004663BE 0FB637 MOVZX ESI,BYTE [EDI]
017F:004663C1 0FB65F01 MOVZX EBX,BYTE [EDI+01]
017F:004663C5 0FB64F02 MOVZX ECX,BYTE [EDI+02]
017F:004663C9 0FB65703 MOVZX EDX,BYTE [EDI+03]
017F:004663CD 0FB64704 MOVZX EAX,BYTE [EDI+04]
017F:004663D1 0FB67F05 MOVZX EDI,BYTE [EDI+05]
017F:004663D5 57 PUSH EDI
017F:004663D6 50 PUSH EAX
017F:004663D7 8D45DC LEA EAX,[EBP-24]
017F:004663DA 52 PUSH EDX
017F:004663DB 51 PUSH ECX
017F:004663DC 53 PUSH EBX
017F:004663DD 56 PUSH ESI
017F:004663DE 68C0536100 PUSH DWORD 006153C0
017F:004663E3 50 PUSH EAX
017F:004663E4 E8EDD40D00 CALL `MFC42!ord_00000B02`
017F:004663E9 8B45EC MOV EAX,[EBP-14]
017F:004663EC 50 PUSH EAX
017F:004663ED E802D50D00 CALL `MFC42!ord_00000339`
017F:004663F2 FFB55CFFFFFF PUSH DWORD [EBP+FFFFFF5C] 〈----輸入後12位註冊碼地址
017F:004663F8 FF75DC PUSH DWORD [EBP-24] 〈----計算出後12位註冊碼地址
017F:004663FB FF1530EB5400 CALL `MSVCRT!_mbsicmp`
總結:
程式註冊要求輸入郵件地址和註冊碼。
程式校驗註冊碼過程:
首先篩選輸入註冊碼,篩除0-9、A-F以外的字元,形成計算有效註冊碼;如是空輸入則顯示註冊錯誤資訊。
進入比對核心後,首先判斷有效註冊碼長度,如不是16位則顯示註冊錯誤;是16位先取前4位儲存,後12位、郵件地址、程式名(PictureToTV)根據16字長的計算尺進行計算得出後12位註冊碼與輸入後12位註冊碼比較。
破解方法:
在計算出後12位註冊碼進行比較處中斷,取前4位註冊碼地址後計算出後12位註冊碼地址,合併兩字串得到註冊碼。
相關文章
- 請教各位前輩 Flex+Ejb3.02008-03-15Flex
- 請教前輩們:關於FlyWeight的理解2004-02-13
- 請教各位前輩,這個專案如何做?2010-09-08
- 開發中使用JavaMail遇到的問題,請前輩門給點意見!2005-10-08JavaAI
- ORACLE-開發大全-前輩創2013-12-05Oracle
- [書呆子]聽聽前輩的話——《MacTalk:人生超程式設計》2014-03-20Mac程式設計
- 程式設計前輩留下的五條經典傳世心得2016-05-06程式設計
- K語言,q語言的前輩2016-07-07
- 各位前輩,我該採用java嗎?2004-09-15Java
- 請前輩們給點意見,讓我對J2EE有個學習概念!!2008-04-16
- 講述: Java類的生命週期,各路高手前來指正~2018-10-21Java
- 新手的第一個工程的總結(第一次寫文章,請前輩們指教)2004-10-01
- 關於就業的兩個方向選擇,想請教一下benq和各位前輩2005-09-01就業ENQ
- 請教JAVA前輩:怎樣才能在系統啟動時就把配置資訊讀入系統2005-10-18Java
- 關於工作中Java的開發的困惑,請bang等有經驗的前輩指教2009-05-14Java
- UWP學習——來自前輩們的經驗2020-04-05
- 初學JavaEE,求前輩介紹點資料2012-12-12Java
- JS實現圖片的淡入和淡出的兩種方法,如有不足,還請前輩多多指導^-^~2018-06-11JS
- 程式設計師職場起點6要素 前輩們那些經歷告訴你2020-11-06程式設計師
- 哈哈!樓下問題解決!謝謝,各位前輩!2003-01-14
- 求各位前輩幫忙看看連表查詢字首問題2020-03-18
- 邦芒寶典:職場前輩的6條經驗之談2024-01-12
- [翻譯]用dede破解-另一篇~請大家指正~~ (5千字)2015-11-15
- 對多種情況下控制檔案的理解與疑問,請指正。2007-11-30
- Tether聘請前銀行分析師首席合規官2018-07-14
- 請教前輩:關於JS的一個奇怪的錯誤,不知是解析順序造成的,還是什麼原因。。2018-06-04JS
- 門診收費票據列印程式碼,望大家指正2011-01-27
- 35 歲前端轉不轉管理 這 5 個前輩告訴你2019-12-06前端
- Jdon前輩,我想參與新的jive論壇的開發2005-04-18
- 對FlyWeight(享元)模式的一點看法,請bang老師給予指正2010-01-22模式
- 完美破解ip-tools2.04,不對之處請大家指正. (8千字)2002-02-05
- redux、mobx、concent特性大比拼, 看後生如何對局前輩2020-08-24Redux
- jquery獲取同輩元素程式碼例項2017-04-07jQuery
- 請教JAVA前輩:在javascript中window.open("index.jsp","_parent")中,_parent引數是什麼意思?2005-10-19JavaScriptIndexJS
- redux、mbox、concent特性大比拼, 看後生如何對局前輩2020-04-06Redux
- 前輩經驗!聊聊新人設計師最容易遇到的12個問題2016-03-04
- 個人對於事件迴圈的一些理解,希望有人來指正(誠心請求指教)2019-03-19事件
- VGChartz:任天堂Switch銷量達8169萬部 已超過其前輩GBA2021-04-04GC