|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-12-18, 06:43 PM | #1 |
榮譽會員
|
2字元破解cad2002中文網路版[網路驗證及限制用戶]
發信人:laoqian
時 間:2003-10-18 軟體名稱: AUTOcad2002中文版網路版 軟體類別: 地球人都知道 軟體介紹:地球人都知道 Flexlm7.1f加密 破解工具:ollydbg 1.09d ,w32Dasm_2002828_pll621,C32ASM_pll621,UltraEdit8.0, 破解目的:無限制使用(爆破) AUTOcadR14中文版大家都很熟悉了吧,不多說。我從上海回來,又開始畫圖了,一年沒幹活,服務機構的軟體都變成正版了,哈哈。可是AUTOcadR14中文版是網路版,我們只買20個點,一個點多少錢不知道(我們還買了cad2002網路版是20個點,一個點10000多元啊!),想來不少。因此,我上晚了點數滿了,就會進不去,提示網路不許可,TMD!看看cad2002是Flexlm加密的,我功力太淺,那我就先拿R14開刀! 上面是我的AUTOcadR14中文版破文裡的。R14之後,現在我終於向cad2002開刀了。 CAD2002,Flexlm7.1f加密,我想也能爆破吧,我沒有能力做他的無限制license。也因為,我覺得作了也沒用,為什麼?你看,一個服務機構買一套網路版,就是自己服務機構專用的,上面都有安裝序列號和服務機構信息,就是作了無限制license,自己也不敢用,怕被查,給別人用那就更不敢了,也不能啊。當然做無限制license的方法應該是可以放出的,但CAD2002加密不使用標準的Flexlm的Dll,它的lc_checkout斷點就找不到了,我的功力太淺,這裡先拋磚引玉吧,其實我也隱約找到了一些有用地方,留待以後吧。 爆破在這裡也是一種破解,對吧?開工。 先反彙編acad.EXE,找找可疑點。好長時間啊,我的電腦是P4 1.6,用了10多分鐘。大略看看,沒什麼有用的。但還是沒白費。因為我按我上篇破文的思路,找到了一些提示,對我下斷點有用。 還是用Ollydbg1.09d。這次我們先不拔掉網線(我們早知拔掉網線就肯定不能通過cad驗證了)。幸虧是P4,進去了。設什麼斷點呢?不知道,我倒! 因為我們上次就知道拔掉網線後,它還要去網路驗證,可是沒有網路,它會多試幾次,這就給了我們時間,我們執行它,看它在那裡有短暫的停頓,那裡就是驗證的地方!而這次我們不拔掉網線!為什麼?反彙編還是有用的,這次我不看運氣了。我們找到了許多和AUTOcadR14.01中文版相似的地方,就在那附近設斷。只要在Flex license視窗出來之前中斷,我們就可以了,當然離關鍵地方越近越好了。 Ollydbg設斷很方便的, 其實我差不多一次就中斷成功! 通過分析反彙編,斷點設在005BCB5A,因為我有R14的經驗,其實也是誤打誤撞啦,哈哈。 我們來到下面這個CALL,偵錯中多少次重啟動,我記不清了,Ollydbg好像還是不太穩定,美中不足!也可能是我開的程序視窗太多,Ollydbg就很站地方了,還有w32Dasm,UltraEdit8.0,計算器,128M記憶體吃不消啦。對了還有開了pll621的C32ASM,他的查詢機器碼的東東很好,雖然Ollydbg也有,但是麻煩。別的還沒來得及用,以後慢慢來啦。 005BCB10 /$ 55 PUSH EBP 005BCB11 |. 8BEC MOV EBP,ESP 005BCB13 |. 51 PUSH ECX 005BCB14 |. 8B15 1C67AC00 MOV EDX,DWORD PTR DS:[AC671C] 005BCB1A |. A1 1867AC00 MOV EAX,DWORD PTR DS:[AC6718] 005BCB1F |. 83C2 3B ADD EDX,3B 005BCB22 |. 56 PUSH ESI 005BCB23 |. 8915 1C67AC00 MOV DWORD PTR DS:[AC671C],EDX 005BCB29 |. 8B88 EC000000 MOV ECX,DWORD PTR DS:[EAX+EC] 005BCB2F |. BE A02EAC00 MOV ESI,ACAD.00AC2EA0 005BCB34 |. 8B11 MOV EDX,DWORD PTR DS:[ECX] 005BCB36 |. 81EE 94000000 SUB ESI,94 005BCB3C |. 81F2 A9B50000 XOR EDX,0B5A9 005BCB42 |. 83C2 3B ADD EDX,3B 005BCB45 |. 8915 1C67AC00 MOV DWORD PTR DS:[AC671C],EDX 005BCB4B |. 8B80 EC000000 MOV EAX,DWORD PTR DS:[EAX+EC] 005BCB51 |. 8338 00 CMP DWORD PTR DS:[EAX],0 005BCB54 |. 0F85 A5000000 JNZ ACAD.005BCBFF 005BCB5A |. 6A 00 PUSH 0 ;我們在這裡break!!設斷點 005BCB5C |. E8 EFF5FFFF CALL ACAD.005BC150 ;進去看看(註:我在這裡白費了心思,這是後話了) 我們F7進去一看 005BCB61 |. 35 A9B50000 XOR EAX,0B5A9 ;看到b5a9,我們在上面的call前這裡設斷吧 005BCB66 |. 83C4 04 ADD ESP,4 005BCB69 |. 3D 564AFFFF CMP EAX,FFFF4A56 ;看到FFFF4A56,我們在上面的call前這裡設斷吧 005BCB6E |. 0F84 8B000000 JE ACAD.005BCBFF ;和cadR14的差不多吧 005BCB74 |. 3D 574AFFFF CMP EAX,FFFF4A57 005BCB79 |. 66:C705 F067AC>MOV WORD PTR DS:[AC67F0],0 005BCB82 |. 75 07 JNZ SHORT ACAD.005BCB8B 005BCB84 |. 32C0 XOR AL,AL 005BCB86 |. 5E POP ESI 005BCB87 |. 8BE5 MOV ESP,EBP 005BCB89 |. 5D POP EBP 005BCB8A |. C3 RETN *******我們發現無論是否拔掉網線,這都會通過,所以F8繼續走下去吧。 ----------------- 進去看看005BCB5C E8 EFF5FFFF CALL ACAD.005BC150 * Referenced by a CALL at Address: |:005BCB5C | :005BC150 56 push esi :005BC151 E87A2C0000 call 005BEDD0 :005BC156 8BF0 mov esi, eax :005BC158 56 push esi :005BC159 E8A2200000 call 005BE200 :005BC15E 83C404 add esp, 00000004 :005BC161 85C0 test eax, eax :005BC163 7405 je 005BC16A :005BC165 83C8FF or eax, FFFFFFFF ;和cadR14很相似啊,激動啊,以為找到那 :005BC168 5E pop esi :005BC169 C3 ret 我正是看到這些,才在前面下斷點,總之,中斷在驗證之前就是勝利 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:005BC163(C) | :005BC16A B91019B000 mov ecx, 00B01910 * Reference To: ACAD.?entity@AcEdJig@@UBEPAVAcDbEntity@@XZ | :005BC16F E8AC0A1D00 call 0078CC20 :005BC174 85C0 test eax, eax :005BC176 7405 je 005BC17D :005BC178 83C8FF or eax, FFFFFFFF :005BC17B 5E pop esi :005BC17C C3 ret * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:005BC176(C) | :005BC17D 83FE11 cmp esi, 00000011 :005BC180 B808000100 mov eax, 00010008 :005BC185 7507 jne 005BC18E :005BC187 B801000200 mov eax, 00020001 ...... ......省略 ...... :005BC1EA 35903F0000 xor eax, 00003F90 :005BC1EF 5E pop esi :005BC1F0 C3 ret ;返回以後知道,這是個擺設, 無論是否連網,都返回一樣的eax。 可能autodesk公司原來是用自己的加密,後來棄用了,TMD。 ==================================== 下面繼續走 005BCB8B |> E8 40220000 CALL ACAD.005BEDD0 005BCB90 |. 83F8 2A CMP EAX,2A 005BCB93 |. 75 1E JNZ SHORT ACAD.005BCBB3 005BCB95 |. 8B0D 1867AC00 MOV ECX,DWORD PTR DS:[AC6718] ; ACAD.00AC69E4 005BCB9B |. C705 5C19B000 >MOV DWORD PTR DS:[B0195C],3B 005BCBA5 |. 8B91 EC000000 MOV EDX,DWORD PTR DS:[ECX+EC] 005BCBAB |. C702 04000000 MOV DWORD PTR DS:[EDX],4 005BCBB1 |. EB 2F JMP SHORT ACAD.005BCBE2 005BCBB3 |> E8 18220000 CALL ACAD.005BEDD0 005BCBB8 |. 83F8 11 CMP EAX,11 005BCBBB |. 74 0A JE SHORT ACAD.005BCBC7 ...... ......省略 ...... 005BCC9E |. A1 5C19B000 MOV EAX,DWORD PTR DS:[B0195C] 005BCCA3 |. 83C0 C5 ADD EAX,-3B 005BCCA6 |. 8915 5019B000 MOV DWORD PTR DS:[B01950],EDX 005BCCAC |. F7D8 NEG EAX 005BCCAE |. 1BC0 SBB EAX,EAX 005BCCB0 |. 25 AD940000 AND EAX,94AD 005BCCB5 |. 05 A9B5FFFF ADD EAX,FFFFB5A9 005BCCBA |. 35 A9B5FFFF XOR EAX,FFFFB5A9 005BCCBF |. 66:8986 940000>MOV WORD PTR DS:[ESI+94],AX 005BCCC6 |. B0 01 MOV AL,1 005BCCC8 |. 5E POP ESI 005BCCC9 |. 8BE5 MOV ESP,EBP 005BCCCB |. 5D POP EBP 005BCCCC \. C3 RETN ;到這裡返回ret 5bce69 按F8走到這裡,當然中間也F7進去看看了,浪費了不少經歷。 ---------------------------------------- 上面返回到下面的005BCE69 CALL ACAD.005BCB10 005BCD90 /$ 55 PUSH EBP 005BCD91 |. 8BEC MOV EBP,ESP 005BCD93 |. 81EC 7C030000 SUB ESP,37C 005BCD99 |. 56 PUSH ESI 005BCD9A |. 57 PUSH EDI 005BCD9B |. C745 FC 000000>MOV DWORD PTR SS:[EBP-4],0 005BCDA2 |. E8 E9D51F00 CALL ACAD.007BA390 005BCDA7 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 005BCDAA |. 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10] 005BCDAD |. 50 PUSH EAX 005BCDAE |. 51 PUSH ECX 005BCDAF |. 68 E80FAC00 PUSH ACAD.00AC0FE8 ; ASCII "rb" 005BCDB4 |. 68 7068AC00 PUSH ACAD.00AC6870 ; ASCII "xmx" 005BCDB9 |. 68 E065AC00 PUSH ACAD.00AC65E0 ; ASCII "acad" 從我們的斷點返回往上看看,看到了什麼acad.xmx,這是acad特有的文件, 叫什麼「AutoCAD 外部信息文件」,看來找對地方了。因為cad開始啟動先調這個文件。 005BCDBE |. E8 2D791200 CALL ACAD.006E46F0 005BCDC3 |. 50 PUSH EAX ; |Arg2 005BCDC4 |. 6A 02 PUSH 2 ; |Arg1 = 00000002 005BCDC6 |. E8 5558F5FF CALL ACAD.00512620 ; \ACAD.00512620 005BCDCB |. 83C4 1C ADD ESP,1C 005BCDCE |. 85C0 TEST EAX,EAX 005BCDD0 |. 75 4C JNZ SHORT ACAD.005BCE1E 005BCDD2 |. 8B7D FC MOV EDI,DWORD PTR SS:[EBP-4] 005BCDD5 |. 83C9 FF OR ECX,FFFFFFFF 005BCDD8 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI] 005BCDDA |. F7D1 NOT ECX 005BCDDC |. 2BF9 SUB EDI,ECX 005BCDDE |. 8D95 84FEFFFF LEA EDX,DWORD PTR SS:[EBP-17C] 005BCDE4 |. 8BC1 MOV EAX,ECX 005BCDE6 |. 8BF7 MOV ESI,EDI 005BCDE8 |. 8BFA MOV EDI,EDX 005BCDEA |. C1E9 02 SHR ECX,2 005BCDED |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS> 005BCDEF |. 8BC8 MOV ECX,EAX 005BCDF1 |. 83E1 03 AND ECX,3 005BCDF4 |. F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[> 005BCDF6 |. 8D4D FC LEA ECX,DWORD PTR SS:[EBP-4] 005BCDF9 |. 51 PUSH ECX 005BCDFA |. E8 092A3300 CALL <JMP.&acutil15.?cndfre@@YAXPAPAD@Z> 005BCDFF |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] 005BCE02 |. 52 PUSH EDX 005BCE03 |. E8 AA2B3300 CALL <JMP.&acutil15.?afclose@@YAHPAVAFIL> 005BCE08 |. 8D85 84FEFFFF LEA EAX,DWORD PTR SS:[EBP-17C] ; | 005BCE0E |. 68 70027B00 PUSH ACAD.007B0270 ; |Arg2 = 007B0270 005BCE13 |. 50 PUSH EAX ; |Arg1 005BCE14 |. E8 979F2E00 CALL ACAD.008A6DB0 ; \ACAD.008A6DB0 005BCE19 |. 83C4 10 ADD ESP,10 005BCE1C |. EB 21 JMP SHORT ACAD.005BCE3F 005BCE1E |> 68 E065AC00 PUSH ACAD.00AC65E0 ; ASCII "acad" 005BCE23 |. 6A 05 PUSH 5 005BCE25 |. 8D4D 88 LEA ECX,DWORD PTR SS:[EBP-78] 005BCE28 |. 68 4C68AC00 PUSH ACAD.00AC684C ; ASCII "Can't find message file %.*s.xmx." 005BCE2D |. 51 PUSH ECX 005BCE2E |. E8 1B293300 CALL <JMP.&acutil15.?asprintf@@YAHPADPBD> 005BCE33 |. 8D55 88 LEA EDX,DWORD PTR SS:[EBP-78] ; | 005BCE36 |. 52 PUSH EDX ; |Arg1 005BCE37 |. E8 34341F00 CALL ACAD.007B0270 ; \ACAD.007B0270 005BCE3C |. 83C4 14 ADD ESP,14 005BCE3F |> E8 8C020000 CALL ACAD.005BD0D0 005BCE44 |. A1 24FAAF00 MOV EAX,DWORD PTR DS:[AFFA24] 005BCE49 |. 85C0 TEST EAX,EAX 005BCE4B |. 75 0A JNZ SHORT ACAD.005BCE57 005BCE4D |. E8 7EDDF0FF CALL ACAD.004CABD0 005BCE52 |. A3 24FAAF00 MOV DWORD PTR DS:[AFFA24],EAX 005BCE57 |> 68 BCA6B500 PUSH ACAD.00B5A6BC 005BCE5C |. 68 BAA6B500 PUSH ACAD.00B5A6BA 005BCE61 |. E8 0ACD1F00 CALL ACAD.007B9B70 005BCE66 |. 83C4 08 ADD ESP,8 005BCE69 |. E8 A2FCFFFF CALL ACAD.005BCB10 ; 這裡從我們的斷點走過來的 ret from 005BCCCC, 我們接著走下去, 接著F8,走 005BCE6E |. 84C0 TEST AL,AL ; al=1 005BCE70 |. 75 08 JNZ SHORT ACAD.005BCE7A 005BCE72 |. 5F POP EDI 005BCE73 |. 33C0 XOR EAX,EAX 005BCE75 |. 5E POP ESI 005BCE76 |. 8BE5 MOV ESP,EBP 005BCE78 |. 5D POP EBP 005BCE79 |. C3 RETN 005BCE7A |> A0 3C19B000 MOV AL,BYTE PTR DS:[B0193C] 005BCE7F |. 84C0 TEST AL,AL ; al=0 005BCE81 |. 75 3E JNZ SHORT ACAD.005BCEC1 005BCE83 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 005BCE86 |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8] 005BCE89 |. 50 PUSH EAX 005BCE8A |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 005BCE8D |. 51 PUSH ECX 005BCE8E |. 52 PUSH EDX 005BCE8F |. 68 4068AC00 PUSH ACAD.00AC6840 ; ASCII "%d/%d/%d" 005BCE94 |. 68 1046AC00 PUSH ACAD.00AC4610 ; ASCII "junkjunkjunkjunk" 看上面到了嗎,垃圾垃圾什麼意思啊?!變態 005BCE99 |. E8 FC2A3300 CALL <JMP.&acutil15.?asscanf@@YAHPBD0ZZ> 005BCE9E |. 83C4 14 ADD ESP,14 005BCEA1 |. 83F8 03 CMP EAX,3 005BCEA4 |. 75 1B JNZ SHORT ACAD.005BCEC1 005BCEA6 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] 005BCEA9 |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ...... ......省略 ...... 005BD06B |. 83CE FF OR ESI,FFFFFFFF 005BD06E |. 83F8 03 CMP EAX,3 005BD071 |. B8 1068AC00 MOV EAX,ACAD.00AC6810 ; ASCII "MAXOBJMEM" 005BD076 |. 74 05 JE SHORT ACAD.005BD07D 005BD078 |. B8 0068AC00 MOV EAX,ACAD.00AC6800 ; ASCII "ACADMAXOBJMEM" 005BD07D |> 50 PUSH EAX ; /Arg1 005BD07E |. E8 9DD61F00 CALL ACAD.007BA720 ; \ACAD.007BA720 005BD083 |. 83C4 04 ADD ESP,4 005BD086 |. 85C0 TEST EAX,EAX 005BD088 |. 74 08 JE SHORT ACAD.005BD092 005BD08A |. 50 PUSH EAX 005BD08B |. FFD7 CALL EDI 005BD08D |. 83C4 04 ADD ESP,4 005BD090 |. 8BF0 MOV ESI,EAX 005BD092 |> 8B0D 6C869E00 MOV ECX,DWORD PTR DS:[<&acdb15.maxObjMem>; ACDB15.maxObjMem 005BD098 |. 33C0 XOR EAX,EAX 005BD09A |. 85F6 TEST ESI,ESI 005BD09C |. 0F9CC0 SETL AL 005BD09F |. 48 DEC EAX 005BD0A0 |. 68 BCA6B500 PUSH ACAD.00B5A6BC 005BD0A5 |. 23C6 AND EAX,ESI 005BD0A7 |. 68 BAA6B500 PUSH ACAD.00B5A6BA 005BD0AC |. 8901 MOV DWORD PTR DS:[ECX],EAX 005BD0AE |. E8 BDCA1F00 CALL ACAD.007B9B70 005BD0B3 |. A0 48C4AF00 MOV AL,BYTE PTR DS:[AFC448] 005BD0B8 |. 83C4 08 ADD ESP,8 005BD0BB |. 24 07 AND AL,7 005BD0BD |. F6D8 NEG AL 005BD0BF |. 1BC0 SBB EAX,EAX 005BD0C1 |. 5F POP EDI 005BD0C2 |. 40 INC EAX 005BD0C3 |. 5E POP ESI 005BD0C4 |. 8BE5 MOV ESP,EBP 005BD0C6 |. 5D POP EBP 005BD0C7 \. C3 RETN ; 返回ret 6d80ea,我們接著走 ---------------------------------------------------------- 上面又返回到下面的006D80EA CALL ACAD.005BCD90,好累啊。 006D8022 . 6A 01 PUSH 1 006D8024 . E8 17232B00 CALL <JMP.&MFC42.#6215> 006D8029 . 8B83 38010000 MOV EAX,DWORD PTR DS:[EBX+138] 006D802F . 8B50 20 MOV EDX,DWORD PTR DS:[EAX+20] 006D8032 . 52 PUSH EDX ; /hWnd 006D8033 . FF15 2C639E00 CALL DWORD PTR DS:[<&USER32.UpdateW>; \UpdateWindow 006D8039 > 8BCB MOV ECX,EBX 006D803B . E8 00320000 CALL ACAD.006DB240 006D8040 . E8 BBE60000 CALL ACAD.006E6700 006D8045 . 6A 30 PUSH 30 006D8047 . E8 481D2B00 CALL <JMP.&MFC42.#823> 006D804C . 83C4 04 ADD ESP,4 006D804F . 8945 C8 MOV DWORD PTR SS:[EBP-38],EAX 006D8052 . 85C0 TEST EAX,EAX 006D8054 . C645 FC 10 MOV BYTE PTR SS:[EBP-4],10 006D8058 . 74 09 JE SHORT ACAD.006D8063 006D805A . 8BC8 MOV ECX,EAX 006D805C . E8 8FBCF4FF CALL ACAD.00623CF0 006D8061 . EB 02 JMP SHORT ACAD.006D8065 006D8063 > 33C0 XOR EAX,EAX 006D8065 > 8983 5C010000 MOV DWORD PTR DS:[EBX+15C],EAX 006D806B . BF 1B46AC00 MOV EDI,ACAD.00AC461B ; ASCII "kjunk" 006D8070 . 83C9 FF OR ECX,FFFFFFFF 006D8073 . 33C0 XOR EAX,EAX 006D8075 . F2:AE REPNE SCAS BYTE PTR ES:[EDI] 006D8077 . F7D1 NOT ECX 006D8079 . 2BF9 SUB EDI,ECX 006D807B . C645 FC 0E MOV BYTE PTR SS:[EBP-4],0E 006D807F . 8BC1 MOV EAX,ECX 006D8081 . 8BF7 MOV ESI,EDI 006D8083 . BF 1046AC00 MOV EDI,ACAD.00AC46 006D8083 . BF 1046AC00 MOV EDI,ACAD.00AC4610 ; ASCII "junkjunkjunkjunk" 006D8088 . C1E9 02 SHR ECX,2 006D808B . F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD P> 006D808D . 8BC8 MOV ECX,EAX 006D808F . 83E1 03 AND ECX,3 006D8092 . F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR> 006D8094 . E8 87CA0D00 CALL ACAD.007B4B20 006D8099 . FF15 849F9E00 CALL DWORD PTR DS:[<&sharedb15.?get>; SHAREDB1.?get快取dUserName@ShareDB@@YAPBDXZ 006D809F . 85C0 TEST EAX,EAX 006D80A1 . 74 18 JE SHORT ACAD.006D80BB 006D80A3 . 8038 00 CMP BYTE PTR DS:[EAX],0 006D80A6 . 74 13 JE SHORT ACAD.006D80BB 006D80A8 . 6A 1E PUSH 1E ; /n = 1E (30.) 006D80AA . 50 PUSH EAX ; |s2 006D80AB . 68 F0F1AF00 PUSH ACAD.00AFF1F0 ; |s1 = "user" 006D80B0 . FF15 9C5E9E00 CALL DWORD PTR DS:[<&MSVCRT._mbsnbc>; \_mbsnbcpy 006D80B6 . 83C4 0C ADD ESP,0C 006D80B9 . EB 1C JMP SHORT ACAD.006D80D7 006D80BB > 6A 00 PUSH 0 006D80BD . E8 1E5CE5FF CALL ACAD.0052DCE0 006D80C2 . 6A 1E PUSH 1E ; /n = 1E (30.) 006D80C4 . 68 BC5FAC00 PUSH ACAD.00AC5FBC ; |s2 = "這裡隱去:是你版權所有信息" 006D80C9 . 68 F0F1AF00 PUSH ACAD.00AFF1F0 ; |s1 = "user" 006D80CE . FF15 9C5E9E00 CALL DWORD PTR DS:[<&MSVCRT._mbsnbc>; \_mbsnbcpy 006D80D4 . 83C4 10 ADD ESP,10 006D80D7 > C605 0EF2AF00 >MOV BYTE PTR DS:[AFF20E],0 006D80DE . E8 6DABD2FF CALL ACAD.00402C50 006D80E3 . 8D8B C8000000 LEA ECX,DWORD PTR DS:[EBX+C8] 006D80E9 . 51 PUSH ECX ; /Arg1 006D80EA . E8 A14CEEFF CALL ACAD.005BCD90 ; 我們返回這裡接著走下去 *****接著F8,走 006D80EF . 83C4 04 ADD ESP,4 006D80F2 . 85C0 TEST EAX,EAX 006D80F4 . 75 0A JNZ SHORT ACAD.006D8100 006D80F6 . E8 75ABD2FF CALL ACAD.00402C70 006D80FB . E9 4D030000 JMP ACAD.006D844D ...... ......省略 ...... 006D82AC . E8 8F202B00 CALL <JMP.&MFC42.#6215> 006D82B1 . 8B43 20 MOV EAX,DWORD PTR DS:[EBX+20] 006D82B4 . 8B40 20 MOV EAX,DWORD PTR DS:[EAX+20] ******************* 一路接著F8,走到這裡 ********************** 006D82B7 . 50 PUSH EAX ; /hWnd到了關鍵地方了 006D82B8 . FF15 2C639E00 CALL DWORD PTR DS:[<&USER32.UpdateW>; \UpdateWindow 006D82BE > E8 ED1C0E00 CALL ACAD.007B9FB0 ; 關鍵call,如果拔掉網線這裡會等很久啊。這裡看license是否安裝啦!F7進入 006D82C3 . 85C0 TEST EAX,EAX ; 如果驗證成功,eax=0。 006D82C5 . 0F85 82010000 JNZ ACAD.006D844D 006D82CB . E8 F01C0E00 CALL ACAD.007B9FC0 ;關鍵call,如果拔掉網線這裡會驗證失敗。這裡check license的正確啦,當然還有好幾處!F7進入 006D82D0 . 85C0 TEST EAX,EAX ; 如果驗證成功,eax=0。 006D82D2 . 0F85 75010000 JNZ ACAD.006D844D 006D82D8 . 8D4D CC LEA ECX,DWORD PTR SS:[EBP-34] ;到此以後,成功, 006D82DB . E8 E41A2B00 CALL <JMP.&MFC42.#540> 006D82E0 . 8D4D A8 LEA ECX,DWORD PTR SS:[EBP-58] 006D82E3 . 6A 00 PUSH 0 ; /Arg2 = 00000000 006D82E5 . 51 PUSH ECX ; |Arg1 006D82E6 . C645 FC 11 MOV BYTE PTR SS:[EBP-4],11 ; | ...... ......省略 ...... 走向成功 ............. ------------------------------------------------ 我們先F7進入關鍵CALL ACAD.007B9FB0, (如果拔掉網線這裡會等很久啊。這裡看license是否安裝啦!) 007B9FB0 /$ E8 5B56E0FF CALL ACAD.005BF610 ;我們go into看看F7。如果驗證成功,返回eax=1。 007B9FB5 |. F6D8 NEG AL ; eax=000000ff 007B9FB7 |. 1BC0 SBB EAX,EAX ; FFFFFFFF 007B9FB9 |. F7D8 NEG EAX ; eax=1 007B9FBB |. 48 DEC EAX ; eax=0 007B9FBC |. 83E0 01 AND EAX,1 ; eax=0,返回成功 007B9FBF \. C3 RETN ---------------------------------------------- 我們go into CALL ACAD.005BF610 來到這裡 005BF610 /$ 55 PUSH EBP 005BF611 |. 8BEC MOV EBP,ESP 005BF613 |. 51 PUSH ECX 005BF614 |. 53 PUSH EBX 005BF615 |. 56 PUSH ESI 005BF616 |. 57 PUSH EDI 005BF617 |. BE 2E46AC00 MOV ESI,ACAD.00AC462E 005BF61C |. BF A02EAC00 MOV EDI,ACAD.00AC2EA0 005BF621 |. C745 FC 000000>MOV DWORD PTR SS:[EBP-4],0 005BF628 |. 81EE 86000000 SUB ESI,86 005BF62E |. 83EF 72 SUB EDI,72 005BF631 |. C705 809FB500 >MOV DWORD PTR DS:[B59F80],1 005BF63B |. E8 C0CBFFFF CALL ACAD.005BC200 ; *********第一個最關鍵call F7進去吧***** 005BF640 |. 8BD8 MOV EBX,EAX ; ebx=eax=0 005BF642 |. C705 809FB500 >MOV DWORD PTR DS:[B59F80],0 005BF64C |. 85DB TEST EBX,EBX 005BF64E |. 75 53 JNZ SHORT ACAD.005BF6A3 005BF650 |. E8 7BF7FFFF CALL ACAD.005BEDD0 005BF655 |. 83F8 2A CMP EAX,2A ; eax=19 005BF658 |. 75 1A JNZ SHORT ACAD.005BF674 005BF65A |. A1 106DAC00 MOV EAX,DWORD PTR DS:[AC6D10] 005BF65F |. C745 FC 430000>MOV DWORD PTR SS:[EBP-4],43 005BF666 |. 8B88 0C010000 MOV ECX,DWORD PTR DS:[EAX+10C] 005BF66C |. C701 04000000 MOV DWORD PTR DS:[ECX],4 005BF672 |. EB 41 JMP SHORT ACAD.005BF6B5 005BF674 |> E8 57F7FFFF CALL ACAD.005BEDD0 005BF679 |. 83F8 11 CMP EAX,11 ; eax=19 005BF67C |. 74 0A JE SHORT ACAD.005BF688 005BF67E |. E8 4DF7FFFF CALL ACAD.005BEDD0 ; eax=19 005BF683 |. 83F8 19 CMP EAX,19 005BF686 |. 75 2D JNZ SHORT ACAD.005BF6B5 005BF688 |> 8B15 106DAC00 MOV EDX,DWORD PTR DS:[AC6D10] ; ACAD.00AC69C4 005BF68E |. C745 FC 430000>MOV DWORD PTR SS:[EBP-4],43 ;看到嗎DWORD PTR SS:[EBP-4]=43 005BF695 |. 8B82 0C010000 MOV EAX,DWORD PTR DS:[EDX+10C] 005BF69B |. C700 03000000 MOV DWORD PTR DS:[EAX],3 005BF6A1 |. EB 12 JMP SHORT ACAD.005BF6B5 005BF6A3 |> 8B0D 106DAC00 MOV ECX,DWORD PTR DS:[AC6D10] ; ACAD.00AC69C4 005BF6A9 |. 8B91 0C010000 MOV EDX,DWORD PTR DS:[ECX+10C] 005BF6AF |. C702 00000000 MOV DWORD PTR DS:[EDX],0 005BF6B5 |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; eax=43 005BF6B8 |. 83C0 BD ADD EAX,-43 ; eax=0 005BF6BB |. F7D8 NEG EAX 005BF6BD |. 1BC0 SBB EAX,EAX 005BF6BF |. 25 4D2F0000 AND EAX,2F4D ; eax=0 005BF6C4 |. 05 59E8FFFF ADD EAX,-17A7 ; eax=FFFFE859 005BF6C9 |. 35 59E8FFFF XOR EAX,FFFFE859 ; 0 005BF6CE |. 66:8947 72 MOV WORD PTR DS:[EDI+72],AX 005BF6D2 |. 66:8986 860000>MOV WORD PTR DS:[ESI+86],AX 005BF6D9 |. 33C0 XOR EAX,EAX 005BF6DB |. 83FB FE CMP EBX,-2 ; ebx=0 005BF6DE |. 5F POP EDI 005BF6DF |. 5E POP ESI 005BF6E0 |. 0F95C0 SETNE AL ; 到這 eax=1 005BF6E3 |. 5B POP EBX 005BF6E4 |. 8BE5 MOV ESP,EBP 005BF6E6 |. 5D POP EBP 005BF6E7 \. C3 RETN ------------------------------------------------- *********第一個最關鍵call 進去吧***** 005BC214處的call是在adlmbase.dll裡的,F7追進去,你會發現很多東東, 這對你編寫無限制的license文件很有用,但第2個關鍵call才是重點。閒話少說。 005BC200 /$ B9 1019B000 MOV ECX,ACAD.00B01910 005BC205 |. E8 060F1D00 CALL ACAD.0078D110 005BC20A |. 85C0 TEST EAX,EAX ; eax=00f8c70 005BC20C |. 75 04 JNZ SHORT ACAD.005BC212 ;一般應該jmp,保險就改eb04 005BC20E |. 83C8 FF OR EAX,FFFFFFFF ;到這個可不行,-1。 005BC211 |. C3 RETN 005BC212 |> 8BC8 MOV ECX,EAX ;看到下面的adlmbase.?Authorize@AdlmLic,太明白了 005BC214 |. FF15 3C999E00 CALL DWORD PTR DS:[<&adlmbase.?Authorize@AdlmLic>; ADLMBASE.?Authorize@AdlmLicense@@QAEHXZ 005BC21A |. 35 903F0000 XOR EAX,3F90 ; eax=0,0 xor 3F90=3F90,那末此時eax=3F90 005BC21F |. 3D 903F0000 CMP EAX,3F90 ;相等不跳 005BC224 |. 75 03 JNZ SHORT ACAD.005BC229 ;跳了可不行! 005BC226 |. 33C0 XOR EAX,EAX ;eax=0 005BC228 |. C3 RETN ;返回eax=0,成功 005BC229 |> 35 903F0000 XOR EAX,3F90 005BC22E |. 33C9 XOR ECX,ECX 005BC230 |. 83C0 4F ADD EAX,4F 005BC233 |. 35 A4CE0000 XOR EAX,0CEA4 005BC238 |. 3D F5CE0000 CMP EAX,0CEF5 005BC23D |. 0F95C1 SETNE CL 005BC240 |. 83C1 FE ADD ECX,-2 005BC243 |. 8BC1 MOV EAX,ECX 005BC245 \. C3 RETN ---------------------------------------------------------------- 再來看看006D82CB CALL ACAD.007B9FC0是關鍵call,如果拔掉網線這裡會驗證失敗。 這裡check license的正確啦,當然還有好幾處! * Referenced by a CALL at Address: |:006D82CB | :007B9FC0 55 push ebp :007B9FC1 8BEC mov ebp, esp :007B9FC3 83EC08 sub esp, 00000008 :007B9FC6 56 push esi :007B9FC7 8D45F8 lea eax, dword ptr [ebp-08] :007B9FCA 57 push edi :007B9FCB 50 push eax :007B9FCC BE85FFFFFF mov esi, FFFFFF85 :007B9FD1 E8FE021D00 call 0098A2D4 :007B9FD6 8B0DD06AAC00 mov ecx, dword ptr [00AC6AD0] :007B9FDC 8B38 mov edi, dword ptr [eax] :007B9FDE 8B01 mov eax, dword ptr [ecx] :007B9FE0 83F803 cmp eax, 00000003 :007B9FE3 7404 je 007B9FE9 ;-----jmp走 :007B9FE5 85C0 test eax, eax :007B9FE7 7511 jne 007B9FFA * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:007B9FE3(C) ------------------- 007B9FE9 |> E8 6222E0FF CALL ACAD.005BC250 ; 第二個最關鍵call F7進去吧into 007B9FEE |. 8BF0 MOV ESI,EAX 007B9FF0 |. F7DE NEG ESI 007B9FF2 |. 1BF6 SBB ESI,ESI 007B9FF4 |. 83E6 01 AND ESI,1 007B9FF7 |. 83EE 7B SUB ESI,7B 007B9FFA |> 8B15 D06AAC00 MOV EDX,DWORD PTR DS:[AC6AD0] ; ACAD.00B01F64 007BA000 |. 833A 04 CMP DWORD PTR DS:[EDX],4 ...... ......省略 ...... 007BA04B |. E8 10000000 CALL ACAD.007BA060 ; \ACAD.007BA060 007BA050 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 007BA052 |. 5F POP EDI 007BA053 |. 5E POP ESI 007BA054 |. 8BE5 MOV ESP,EBP 007BA056 |. 5D POP EBP 007BA057 \. C3 RETN --------------------------------------------------------- *********第二個最關鍵call 進去吧***** 005BC264處的call是在adlmbase.dll裡的,F7追進去,你會發現很多東東, 這對你編寫無限制的license文件很有用。閒話少說。 這個call,被好幾處使用,我們可以改它! 005BC250 /$ B9 1019B000 MOV ECX,ACAD.00B01910 005BC255 |. E8 B60E1D00 CALL ACAD.0078D110 005BC25A |. 85C0 TEST EAX,EAX 005BC25C |. 75 04 JNZ SHORT ACAD.005BC262 ;一般應該jmp,保險就改eb04 005BC25E |. 83C8 FF OR EAX,FFFFFFFF ;到這個可不行,-1。 005BC261 |. C3 RETN 005BC262 |> 8BC8 MOV ECX,EAX ; 看到下面的adlmbase.?Check@AdlmLicens,太明白了 005BC264 |. FF15 38999E00 CALL DWORD PTR DS:[<&adlmbase.?Check@AdlmLicens>; ADLMBASE.?Check@AdlmLicense@@QAEHXZ 005BC26A |. 35 903F0000 XOR EAX,3F90 ;上面eax返回0,那就成功了。 005BC26F |. 2D 903F0000 SUB EAX,3F90 005BC274 |. F7D8 NEG EAX 005BC276 |. 1BC0 SBB EAX,EAX 005BC278 |. 25 7AF10000 AND EAX,0F17A ;成功,返回eax=0 005BC27D \. C3 RETN -------- 破解方法 -------- 方法1.我們要她還去網路驗證,但無論返回成功與否,我們都可以用。 此法好處是,萬一有人在伺服器端監控,可以看到我們在同時使用,至多 是點數滿了,不會發現我們在作弊。除非他同時有很多人來查我們同時在線 ,才會發現怎麼點數滿了,還能用,如果你有50個點以上,讓他查吧。 005BC20C |. 75 04 JNZ SHORT ACAD.005BC212 ;一般應該jmp,保險就改75 改為eb 005BC21A |. 35 903F0000 XOR EAX,3F90 ; 改為 mov eax,3f90,35改為B8 005BC25C |. 75 04 JNZ SHORT ACAD.005BC262 ;一般應該jmp,保險就改75 改為eb 005BC26A |. 35 903F0000 XOR EAX,3F90 ;改為 mov eax,3f90,35改為B8 這時你甚至可以拔掉網線使用,你可以驗證一下。 執行acad,停頓時間比連網長多了,原因我在cadR14破文裡說過 過一會出現Flex license視窗,這時你點擊cancel,再點出錯視窗的確定,即可進入。 另外,當然點數滿時,也會有出錯視窗出現,但再點出錯視窗的確定,即可進入。這是因為我們沒有使用90大法。 如果你始終聯接在網上,而Flex license伺服器也不關閉,那可以只改2個字元!! 就是: 005BC21A |. 35 903F0000 XOR EAX,3F90 ; 改為 mov eax,3f90,35改為B8 005BC26A |. 35 903F0000 XOR EAX,3F90 ;改為 mov eax,3f90,35改為B8 解釋:以上分析可以看到來到005BC21A,005BC26A 時,若eax=0就驗證成功, 此後下一句 XOR EAX,3F90, 而eax=0那麼 0 XOR 3f90=3F90!! 那末此時eax=3F90,我們不管前面eax返回什麼值,我強制讓eax=3F90就行了 mov eax,3f90 他的機器碼:B8 903F0000, 你再看XOR EAX,3F90的機器碼35 903F0000。 因此只改2處共2字元! 方法2.我們要去掉網路驗證,我們都可以用。 此法好處是,沒有網路驗證驗證,節約時間,但你最好自己在家裡用。 否則,他們來查,怎麼一個人也沒有在伺服器顯示,而你們明明都在用。 很簡單:在方法1的基礎上,把那前面的兩個call都nop掉,90大法顯神威。 到此,我們可以都使用正版了!!!哈哈 如果你想家裡也使用,你把電腦抗來,連網安裝成功後,再打上修正檔,回去就可以用了。 總結: Flexlm加密看雪地書裡講得很詳細了。我看Flexlm加密的弱點就是可以爆破,他無法像一些狗加密那樣把程序的關鍵資料或加位址密並儲存在狗裡,而只能返回成功失敗標誌!雖然CAD2002加密不使用標準的Flexlm的Dll,但我懷疑adlmbase.dll就是我們要找的,很可能是專為autodesk做的,有興趣可以仔細研究。 對於Flexlm一類的加密,我們除了作無限制的license以外,就是爆破它,關鍵是找到斷點!願我的一些找斷點的經驗於大家有所說明 。首先吃透軟體的執行規律,反彙編找它的可疑處下斷。 最後,建議Flexlm加密等可以像一些狗加密那樣把程序的關鍵資料或位址加密並儲存在狗裡一樣,而不是只返回成功失敗標誌!或者,在程序執行中間再隨機驗證,不過這會影響客戶端執行速度,想像你有100個點會怎樣,伺服器也受不了吧。 當然,這還是防不住的。 |
送花文章: 3,
|