Icontoy3.1破解紀錄(上) (5千字)

看雪資料發表於2000-12-29

Icontoy3.1破解紀錄(上)
大家好!我又回來了,這次給大家帶來的教程是關於一個圖示軟體的,破解的過程中遇到了一點小挫折,當然,經過這次小挫折,自己又有了一點收穫,所謂功力就是這樣培養起來的,感覺也就是這樣培養起來的嗎!所以,對廣大的初學者,我還是非常希望大家能自己多動手破破手頭能找的到的軟體,有些事情光看別人的教程是不能深刻理解的,自己動動手,效果就會好得多。好了,廢話到此為止,READY?GO!
1.當然架起TRW2000,LOAD"ICONTOY.EXE",調出輸入註冊媽的視窗,隨便輸入一點資訊.下面是我的輸入,你完    全不必要和我的一樣.
    Registration name:    luoyi
    Registration code:    654321
2.CTRL+M切入TRW2000,幹什麼?下中斷呀!先碰碰運氣,就用"GETWINDOWTEXT"吧!在TRW2000的命令輸入處輸入
"G GETWINDOWTEXT"回車!好了,我們又回到程式介面中了.回車,馬上,程式被"GETWINDOWTEXT"中斷攔了下來.
接下來,就按照我上篇文章中說的,按F12了,看按多少次出現錯誤提示.按呀按呀,按呀按呀.呵呵....其實沒
這麼多,對這個程式來說,6次就走到頭了--------"Registration key error"!
3.再來吧.重新填好資訊,下好斷點,攔住後,按6-1=5次F12,在TRW2000的程式碼視窗中,你能看到如下的程式碼:
015F:0044DFE8 E82FFAFFFF      CALL    0044DA1C
015F:0044DFED 8945F4          MOV      [EBP-0C],EAX    <----------你停在這裡!
015F:0044DFF0 33C0            XOR      EAX,EAX
015F:0044DFF2 55              PUSH    EBP
015F:0044DFF3 686CE04400      PUSH    DWORD 0044E06C
015F:0044DFF8 64FF30          PUSH    DWORD [FS:EAX]
...
...
015F:0044E015 E8425BFBFF      CALL    00403B5C
015F:0044E01A 85DB            TEST    EBX,EBX
015F:0044E01C 7C0A            JL      0044E028
015F:0044E01E 8BD3            MOV      EDX,EBX
015F:0044E020 8B45F4          MOV      EAX,[EBP-0C]
015F:0044E023 E8C8CCFDFF      CALL    0042ACF0
015F:0044E028 85F6            TEST    ESI,ESI
015F:0044E02A 7C0A            JL      0044E036
015F:0044E02C 8BD6            MOV      EDX,ESI
015F:0044E02E 8B45F4          MOV      EAX,[EBP-0C]
015F:0044E031 E8DECCFDFF      CALL    0042AD14
015F:0044E036 85F6            TEST    ESI,ESI
015F:0044E038 7D0E            JNL      0044E048
015F:0044E03A 85DB            TEST    EBX,EBX
015F:0044E03C 7D0A            JNL      0044E048
015F:0044E03E B204            MOV      DL,04
015F:0044E040 8B45F4          MOV      EAX,[EBP-0C]
015F:0044E043 E8CC48FFFF      CALL    00442914
015F:0044E048 8B45F4          MOV      EAX,[EBP-0C]
015F:0044E04B 8B10            MOV      EDX,[EAX]
015F:0044E04D FF92CC000000    CALL    NEAR [EDX+CC]    <--------這個CALL就是撥出錯誤時
...                                                                的MESSAGEBOX的CALL!
...
015F:0044E066 E8CD4EFBFF      CALL    00402F38
015F:0044E06B C3              RET
4.出錯的地方找到了,下面就是往上看,看在哪兒可以有個有條件跳轉(JZ/JNA/JA/JB..)可以繞過它的.可是..
  很可惜,雖然上面有很多個TEST...,JZ/JNZ...可是分析來,分析去就是沒有一個可以跳過出錯的CALL的.怎
  麼辦呢?我開始在這裡也被困住了,(我也是名新手呀,經驗非常不足,請各位大蝦不要見笑.呵呵...)怎麼才能
  繞過去呢?想呀,想呀,想呀,想呀,終於想到了!我所在的子程式本身就是一個錯誤時執行的程式!我要繞過它,
  只有到它的上層去找,在這裡打轉是轉不出來的!想到了就幹!F12幾次(不要問我是多少次,出來一次,就往
  上看看,看有沒有有條件跳轉可以跳過去的....)經過多次試驗,我來到了下面這段程式碼:
015F:00485E8F A104E94800      MOV      EAX,[0048E904]
015F:00485E94 E8BFFDFFFF      CALL    00485C58    <--------明白了吧?這就是判斷註冊碼正確
                                                            與否的CALL!
015F:00485E99 803D00E9480001  CMP      BYTE [0048E900],01
015F:00485EA0 0F85C4000000    JNZ      NEAR 00485F6A  <--------註冊碼錯誤的時候就跳了!跳到-|
015F:00485EA6 8D55F8          LEA      EDX,[EBP-08]                                        |
........                                          <-----這中間都沒有跳轉語句,                |
........                                                就省略了.                            |
                                                                                            |
015F:00485F61 B201            MOV      DL,01                                                |
015F:00485F63 8B08            MOV      ECX,[EAX]                                            |
015F:00485F65 FF5160          CALL    NEAR [ECX+60]                                        |
015F:00485F68 EB0A            JMP      SHORT  00485F74    <-----正確的時候就跳過出錯的      |
                                                                MESSAGEBOX了!              |
                                                                                            |
015F:00485F6A B82C604800      MOV      EAX,0048602C  <------這裡來了!----------------------|
015F:00485F6F E80C81FCFF      CALL    0044E080    <-------這就是困住我的那個CALL!   
015F:00485F74 33C0            XOR      EAX,EAX    <-------我從這裡出來了.
015F:00485F76 5A              POP      EDX
015F:00485F77 59              POP      ECX
015F:00485F78 59              POP      ECX
015F:00485F79 648910          MOV      [FS:EAX],EDX
015F:00485F7C 68995F4800      PUSH    DWORD 00485F99
015F:00485F81 8D45F4          LEA      EAX,[EBP-0C]
015F:00485F84 E87FDBF7FF      CALL    00403B08
015F:00485F89 8D45F8          LEA      EAX,[EBP-08]
015F:00485F8C E877DBF7FF      CALL    00403B08
015F:00485F91 C3              RET   
怎麼樣?看明白我的註釋了吧?好了,找到關鍵之處了!也算成功了一半吧?呵呵..先烤烤火,我的手都僵了,呵呵........

相關文章