史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 繪圖軟體應用技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-18, 06:43 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 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個點會怎樣,伺服器也受不了吧。
當然,這還是防不住的。
psac 目前離線  
送花文章: 3, 收花文章: 1626 篇, 收花: 3197 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:08 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2019, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1