tElock XXX 之forgot、heXer修改版脫殼

看雪資料發表於2004-07-04

下載頁面:  http://bbs.pediy.com/showthread.php?s=&threadid=2440  或 點選此處本地下載
軟體大小:  65 KB
             
【軟體簡介】:forgot、heXer的tElock修改版
             
【作者宣告】:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
             
【除錯環境】:WinXP、Ollydbg1.10、PEiD、LordPE、ImportREC
             
――――――――――――――――――――――――――――――――― 
【脫殼過程】:
          
      
昨天黃昏,有人自4樓墜落,剎那間殞命。
成功、失敗、喜悅、悲傷、愛情、事業……人世間的一切都與他無關了。
不說了,窗外夏雨正濃,脫個殼吧。
――――――――――――――――――――――――――――――――― 
一、消除ZwSetInformationThread反跟蹤
             
             
設定Ollydbg忽略除了“INT3中斷”之外的所有其它異常選項。老規矩:用IsDebug 1.4外掛去掉Ollydbg的偵錯程式標誌。
注意:不要在程式中下INT3普通斷點,可以下硬體斷點,否則forgot會讓你ReBoot。
         

程式碼:
   00430862     E9 99D7FFFF         jmp xxx.0042E000//進入OD後停在這

           
Shift+F9執行,程式中斷在異常處
程式碼:
  0042E0E1     CC                  int3//第1次異常 0042EC81     CC                  int3//第1次異常

           
現在可以忽略所有的異常選項了。Ctrl+S 搜尋命令序列:
程式碼:
  push 0 push 0 push 11 push eax

找到在0042F7EE處
程式碼:
      0042F7DE     8BBD A7204000       mov edi,dword ptr ss:[ebp+4020A7] 0042F7E4     85FF                test edi,edi 0042F7E6     74 0F               je short xxx.0042F7F7//改為:JMP 0042F7F7 ★ 0042F7E8     FF95 191F4000       call dword ptr ss:[ebp+401F19] 0042F7EE     6A 00               push 0//找到這裡 0042F7F0     6A 00               push 0 0042F7F2     6A 11               push 11 0042F7F4     50                  push eax 0042F7F5     FFD7                call edi//ZwSetInformationThread

           
當然,你可以先BP ZwSetInformationThread ,得知這個Anti的地址啦。
           
           
――――――――――――――――――――――――――――――――― 
二、消除自校驗
           
           
Ctrl+S 搜尋命令序列:
程式碼:
  push 30 push ebx

找到在0042FDEF處。我們在其上面的0042FDD7的跳轉處下個 硬體執行斷點。
           
程式碼:
  0042FDCF     FF95 7F154000       call dword ptr ss:[ebp+40157F] 0042FDD5     85C0                test eax,eax 0042FDD7     0F85 D7000000       jnz xxx.0042FEB4//改為JMP ★ 0042FDDD     8B95 4C394000       mov edx,dword ptr ss:[ebp+40394C] 0042FDE3     0195 14394000       add dword ptr ss:[ebp+403914],edx 0042FDE9     0195 20394000       add dword ptr ss:[ebp+403920],edx 0042FDEF     6A 30               push 30//找到這裡 0042FDF1     53                  push ebx 0042FDF2     FFB5 20394000       push dword ptr ss:[ebp+403920] 0042FDF8     E8 FDF7FFFF         call xxx.0042F5FA 0042FDFD     EB 58               jmp short xxx.0042FE57

           
這裡的自校驗方式和tElock是一樣的。
           
           
――――――――――――――――――――――――――――――――― 
三、Magic Jump:避開輸入表加密
           
           
Shift+F9執行,會有幾個000006EF異常,繼續Shift+F9,直至Ollydbg中斷在0042FDD7的 硬體執行斷點 處。
下面就是處理IAT的地方啦。
         
程式碼:
    0042FEB4     8985 34394000       mov dword ptr ss:[ebp+403934],eax 0042FEBA     8D85 7C304000       lea eax,dword ptr ss:[ebp+40307C]

           
可以看出只加密下面4個DLL的函式:
程式碼:
  0043007C   47 44 49 33 32 2E 44 4C 4C 55 53 45 52 33 32 2E  GDI32.DLLUSER32. 0043008C   44 4C 4C 53 48 45 4C 4C 33 32 2E 44 4C 4C 4B 45  DLLSHELL32.DLLKE 0043009C   52 4E 45 4C 33 32 2E 44 4C 4C                    RNEL32.DLL

         
程式碼:
    0042FEC0     60                  pushad 0042FEC1     33C9                xor ecx,ecx 0042FEC3     2AF6                sub dh,dh 0042FEC5     8A13                mov dl,byte ptr ds:[ebx] 0042FEC7     F6C2 40             test dl,40 0042FECA     74 03               je short xxx.0042FECF 0042FECC     80E2 5F             and dl,5F 0042FECF     0AD2                or dl,dl 0042FED1     74 1E               je short xxx.0042FEF1 0042FED3     43                  inc ebx 0042FED4     FEC6                inc dh 0042FED6     41                  inc ecx 0042FED7     3A5408 FF           cmp dl,byte ptr ds:[eax+ecx-1] 0042FEDB     74 E8               je short xxx.0042FEC5 0042FEDD     3A5408 08           cmp dl,byte ptr ds:[eax+ecx+8] 0042FEE1     74 E2               je short xxx.0042FEC5 0042FEE3     3A5408 12           cmp dl,byte ptr ds:[eax+ecx+12] 0042FEE7     74 DC               je short xxx.0042FEC5 0042FEE9     3A5408 1D           cmp dl,byte ptr ds:[eax+ecx+1D] 0042FEED     74 D6               je short xxx.0042FEC5 0042FEEF     EB D0               jmp short xxx.0042FEC1 0042FEF1     0AF6                or dh,dh 0042FEF3     895424 1C           mov dword ptr ss:[esp+1C],edx 0042FEF7     61                  popad 0042FEF8     C685 E1314000 00    mov byte ptr ss:[ebp+4031E1],0 0042FEFF     74 24               je short xxx.0042FF25//Magic Jump!改為JMP ★             0043005D     81E3 FFFFFF7F       and ebx,7FFFFFFF 00430063     53                  push ebx 00430064     FFB5 34394000       push dword ptr ss:[ebp+403934] 0043006A     FF95 7B154000       call dword ptr ss:[ebp+40157B]; kernel32.GetProcAddress             00430161     3107                xor dword ptr ds:[edi],eax//地址寫入 00430163     58                  pop eax 00430164     48                  dec eax 00430165     74 09               je short xxx.00430170 00430167     40                  inc eax 00430168     F8                  clc 00430169     8803                mov byte ptr ds:[ebx],al 0043016B     43                  inc ebx 0043016C     3803                cmp byte ptr ds:[ebx],al 0043016E     75 F9               jnz short xxx.00430169 00430170     8385 38394000 04    add dword ptr ss:[ebp+403938],4 00430177     E9 B9FDFFFF         jmp xxx.0042FF35 0043017C     83C6 14             add esi,14 0043017F     8B95 4C394000       mov edx,dword ptr ss:[ebp+40394C] 00430185     E9 13FCFFFF         jmp xxx.0042FD9D//迴圈

           
           
――――――――――――――――――――――――――――――――― 
四、第2區段記憶體訪問斷點大法:直達OEP
           
           
取消以前的所有斷點,包括硬體斷點。
Alt+M開啟記憶體映象視窗,在401000第2個區段處下記憶體訪問斷點,Shift+F9執行,直達OEP!
           
程式碼:
  00404C8F     E9 90000000         jmp xxx.00404D24//在這兒用LordPE糾正ImageSize後完全DUMP這個程式 00404D24     60                  pushad 00404D25     68 20F54000         push xxx.0040F520 ; ASCII "tElockv098" 00404D2A     6A 00               push 0 00404D2C     6A 00               push 0 00404D2E     E8 55750000         call xxx.0040C288 ; jmp to kernel32.CreateMutexA 00404D33     E8 80750000         call xxx.0040C2B8 ; jmp to ntdll.RtlGetLastWin32Error 00404D38     3D B7000000         cmp eax,0B7 00404D3D     75 18               jnz short 00404D57//改為JMP就可以同時開幾個tElock了 00404D3F     6A 00               push 0 00404D41     68 2BF54000         push xxx.0040F52B ; ASCII "Reminder" 00404D46     68 34F54000         push xxx.0040F534 ; ASCII "Another instance of tElock is already running!" 00404D4B     6A 00               push 0 00404D4D     E8 86760000         call xxx.0040C3D8 ; jmp to user32.MessageBoxA

           
執行ImportREC,選擇這個程式。把OEP改為00004C8F,點“IAT AutoSearch”,點“Get Import”,FixDump,正常執行!
           
             
―――――――――――――――――――――――――――――――――    
程式碼:
                                      ,     _/          /| _.-~/            \_     ,        青春都一晌        ( /~   /              \~-._ |\        `\\  _/                \   ~\ )          忍把浮名     _-~~~-.)  )__/;;,.          \_  //'   /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        換了破解輕狂  `~ _( ,_..--\ (     ,;'' /    ~--   /._`\    /~~//'   /' `~\         ) /--.._, )_  `~   "  `~"  "      `"      /~'`\    `\\~~\                             "     "   "~'  ""

    

     Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]

                2004-07-04  20:00

相關文章