PESPIN v0.7 stolen code 的找回
【目 標】: 自己隨便寫的一個(用Pespinv0.7加的殼)
【工 具】:Olydbg1.1
【任 務】:說說它的殼的Stolen code的找回
【操作平臺】:WINXP pro sp1
【作 者】:loveboom[DFCG][FCG]
【相關連結】: 去dfcg裡下吧,因一不小心加了兩張圖進去,這裡又不上讓這麼大的傢伙,經過二哥的意見,點後面的下載http://www.chinadfcg.com/attachment.php?aid=4008
【簡要說明】:今天和二哥聊了這麼久,二哥都寫了這麼多東西,我不也不好意思,所以就湊著寫一篇吧
【詳細過程】:
本來想寫個完整的脫文,沒想到自己水平太菜,所以只搞出這麼外東東出來.這個殼的stolen code其實很好找的,新版比舊版在抽程式碼和iat已經改進了很多,iai也像aspr差不多,把部分iat轉到
殼中,因水平有限,對那些進殼的IAT我也不知道怎麼弄,還請高手指點一二,謝謝!
開始了,我們先準備一下,我是用flyfancy那個去花指令外掛,如果你的是hoto寫的外掛的話,可能要改一下,不過這個應該
沒什麼問題的吧.
在指令碼配置檔案里加上如下程式碼:
在junktype里加上,pespin
像這樣子
JunkType=Common,TELock,UltraProtect,Custom,PEsPin
再新增這樣的東東:)
PatList_PEsPin=_Pes1,_jmp01,_call0111,_PESPIN1,_Pespin_jne01,_pESPIN_JMP01
我把原有的jmp01改成了這樣:
[CODE_jmp01]
S = EB01??
R = EB0190
在檔案後面加上:
[CODE_Pes1]
; jmp label1
;
S =EB04??EB04??EBFB??
R =909090909090909090
[CODE_call0111]
; call label1
; db _junkcode
S =E801000000??
R =E80100000090
[CODE_PESPIN1]
S =E803000000EB04??EBFB??
R =E803000000909090909090
[CODE_Pespin_jne01]
S =7501??
R =909090
[CODE_Pespin_JMP01]
S =EB04??EB04??EBFB??
R =909090909090909090
各位老大應該看得懂上面的吧,可能有點亂,但懶得整理了:D
寫好這些後就用OD來開工了,設定一下OD:alt+o除Invalid or privileged instruction這項外的其它都打鉤.
載入後隱一下身,要不殼會發現你的OD的。操作好後看看這裡吧.
載入後就有一個異常,還沒看到程式碼呢,按shift+f9一次,這樣就到了入口處
005F6087 > /EB 01 JMP SHORT Project1.005F608A ;入口
005F6089 |68 60E80000 PUSH 0E860
按f9一次,這樣會出現異常:
005F7E9C FB STI ;F9一次後,這裡異常了
005F7E9D FFFF ??? ; Unknown command
......
異常後按兩次shift+f9看到很多???哦
00400201 FFFF ??? ; Unknown command
00400203 FFFF ??? ; Unknown command
00400205 FFFF ??? ; Unknown command
00400207 FFFF ??? ; Unknown command
看到這些資訊後,下斷bp LoadLibraryA,然後按shift+f9,到系統了吧:
77E5D961 > 837C24 04 00 CMP DWORD PTR SS:[ESP+4],0 ;斷了後,取消斷點
77E5D966 53 PUSH EBX
取消這個斷點,然後alt+f9執行到返回到程式的地盤:
005F6E0E 85C0 TEST EAX,EAX ; kernel32.77E40000
005F6E10 0F84 2F070000 JE Project1.005F7545
返回按CTRL+F查詢命令'OR [EDX],0,很近的,其實一下就看到的
005F6E89 830A 00 OR DWORD PTR DS:[EDX],0 ;這裡就是我們要找的
005F6E8C 0F84 EF000000 JE Project1.005F6F81
005F6E92 8B02 MOV EAX,DWORD PTR DS:[EDX]
找到後,按F4直接到5F6E89處,如果是VB或DELPHI的檔案的話,那個edx一般就是iat的開始處的VA,
然後ctrl+f9執行到ret處:
005F6EB1 012C24 ADD DWORD PTR SS:[ESP],EBP
005F6EB4 810424 B4466F06 ADD DWORD PTR SS:[ESP],66F46B4
005F6EBB 68 286F630F PUSH 0F636F28
005F6EC0 812C24 9643230F SUB DWORD PTR SS:[ESP],0F234396
005F6EC7 012C24 ADD DWORD PTR SS:[ESP],EBP
005F6ECA C3 RETN ;執行到這裡
到了後按f8一次進了這裡,這裡有我們要的東西哦,
005F6887 60 PUSHAD
005F6888 EB 04 JMP SHORT Project1.005F688E
好了,現在用上我的去花指令幫它清爽一下ALT+shift+S選擇pespin範圍為01FFF然後就好看很多了,我清了114個哦
清除後:
005F6887 60 PUSHAD
005F6888 90 NOP
005F6889 90 NOP
005F688A 90 NOP
005F688B 90 NOP
005F688C 90 NOP
005F688D 90 NOP
005F688E 90 NOP
005F688F 90 NOP
005F6890 90 NOP
005F6891 0BFF OR EDI,EDI
005F6893 75 16 JNZ SHORT Project1.005F68AB
005F6895 8B9D 8D2B4000 MOV EBX,DWORD PTR SS:[EBP+402B8D]
005F689B 2D 01000000 SUB EAX,1
......
005F68CC 90 NOP
005F68CD 90 NOP
005F68CE 90 NOP
005F68CF 8B3B MOV EDI,DWORD PTR DS:[EBX]
005F68D1 03BD 852B4000 ADD EDI,DWORD PTR SS:[EBP+402B85]
005F68D7 803F 4C CMP BYTE PTR DS:[EDI],4C
005F68DA 75 2C JNZ SHORT Project1.005F6908
005F68DC E8 260F0000 CALL Project1.005F7807 ;直接F4到這裡
005F68E1 3D 531EF917 CMP EAX,17F91E53
005F68E6 75 20 JNZ SHORT Project1.005F6908
005F68E8 8B85 812B4000 MOV EAX,DWORD PTR SS:[EBP+402B81]
005F68EE D1E1 SHL ECX,1
在005F68DC 處直接按F4執行到那裡。然後向下繼續找:
005F6918 8BBD 792B4000 MOV EDI,DWORD PTR SS:[EBP+402B79]
005F691E 3BC7 CMP EAX,EDI
005F6920 76 35 JBE SHORT Project1.005F6957
;這裡要改成Jmp 005F6957
005F6922 03BD 7D2B4000 ADD EDI,DWORD PTR SS:[EBP+402B7D]
改上面的,注意如果是VB的程式就不要跳這裡,一跳程式就over了
改完後再看這裡吧:
005F6951 FF95 C4394000 CALL DWORD PTR SS:[EBP+4039C4]
005F6957 EB 01 JMP SHORT Project1.005F695A
005F6959 90 NOP
005F695A 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
;這裡改成mov ss:[edx],EAX
005F695E 61 POPAD
005F695F FF0424 INC DWORD PTR SS:[ESP]
005F6962 0BC0 OR EAX,EAX
005F6964 C3 RETN
005F6965 EB 01 JMP SHORT Project1.005F6968
005F6967 90 NOP
到這裡完了嗎?沒有,後面還有呢.
005F6968 57 PUSH EDI
005F6969 51 PUSH ECX
005F696A 90 NOP
005F696B 90 NOP
005F696C 90 NOP
005F696D 90 NOP
005F696E 90 NOP
005F696F 90 NOP
005F6970 90 NOP
005F6971 90 NOP
005F6972 90 NOP
005F6973 BF 4F825F00 MOV EDI,Project1.005F824F
005F6978 EB 01 JMP SHORT Project1.005F697B
005F697A 90 NOP
005F697B B9 65060000 MOV ECX,665
005F6980 EB 01 JMP SHORT Project1.005F6983
005F6982 90 NOP
005F6983 3917 CMP DWORD PTR DS:[EDI],EDX
005F6985 74 0A JE SHORT Project1.005F6991
005F6987 47 INC EDI
005F6988 ^ E2 F9 LOOPD SHORT Project1.005F6983
005F698A EB 01 JMP SHORT Project1.005F698D
005F698C 90 NOP
005F698D 8902 MOV DWORD PTR DS:[EDX],EAX
;這裡nop掉
005F698F EB 25 JMP SHORT Project1.005F69B6
改好這幾個地方後(這樣就可以得到全部API函式,可惜有函式還是不行的,這個後面再說),按F4執行到005F6964處
005F6962 0BC0 OR EAX,EAX
005F6964 C3 RETN ;在這裡按F4
現在我們看到esp的值了吧0012FFA0,這個和以前的版本一樣下斷hr esp+4也就是下斷hr 12FFA4,下斷後執行就直接
到stolen code處了.下面的就要看清楚了哦,不過用我的去花指令指令碼清理後好看很多.這個版本把stolen code裡的
call全部變形了不過太過簡單.不過抽程式碼之多確實變態.
005F7088 55 PUSH EBP :*****
005F7089 EB 01 JMP SHORT Project1.005F708C
005F708B 90 NOP
005F708C 8BEC MOV EBP,ESP :*****
005F708E EB 01 JMP SHORT Project1.005F7091
005F7090 90 NOP
005F7091 83C4 F0 ADD ESP,-10 :*****
005F7094 EB 01 JMP SHORT Project1.005F7097
005F7096 90 NOP
005F7097 B8 983A4600 MOV EAX,Project1.00463A98 :*****
005F709C EB 01 JMP SHORT Project1.005F709F
005F709E 90 NOP
005F709F 68 A9705F00 PUSH Project1.005F70A9
005F70A4 - E9 8BEBE0FF JMP Project1.00405C34 :*****
005F70A9 A1 F8584600 MOV EAX,DWORD PTR DS:[4658F8] :*****
005F70AE EB 01 JMP SHORT Project1.005F70B1
005F70B0 90 NOP
005F70B1 8B00 MOV EAX,DWORD PTR DS:[EAX] :*****
005F70B3 EB 01 JMP SHORT Project1.005F70B6
005F70B5 90 NOP
005F70B6 68 C0705F00 PUSH Project1.005F70C0
005F70BB - E9 F07DE5FF JMP Project1.0044EEB0 :*****
005F70C0 8B0D DC594600 MOV ECX,DWORD PTR DS:[4659DC] :***** ; Project1.00466BD8
005F70C6 EB 01 JMP SHORT Project1.005F70C9
005F70C8 90 NOP
005F70C9 A1 F8584600 MOV EAX,DWORD PTR DS:[4658F8] :*****
005F70CE EB 01 JMP SHORT Project1.005F70D1
005F70D0 90 NOP
005F70D1 8B00 MOV EAX,DWORD PTR DS:[EAX] :*****
005F70D3 EB 01 JMP SHORT Project1.005F70D6
005F70D5 90 NOP
005F70D6 8B15 8C384600 MOV EDX,DWORD PTR DS:[46388C] :***** ; Project1.004638D8
005F70DC EB 01 JMP SHORT Project1.005F70DF
005F70DE 90 NOP
005F70DF 68 E9705F00 PUSH Project1.005F70E9
005F70E4 - E9 DF7DE5FF JMP Project1.0044EEC8 :*****
005F70E9 A1 F8584600 MOV EAX,DWORD PTR DS:[4658F8] :*****
005F70EE EB 01 JMP SHORT Project1.005F70F1
005F70F0 90 NOP
005F70F1 8B00 MOV EAX,DWORD PTR DS:[EAX] :*****
005F70F3 EB 01 JMP SHORT Project1.005F70F6
005F70F5 90 NOP
005F70F6 68 00715F00 PUSH Project1.005F7100 ; ASCII "h
q_"
005F70FB - E9 487EE5FF JMP Project1.0044EF48 :*****
005F7100 68 0A715F00 PUSH Project1.005F710A
005F7105 - E9 52CCE0FF JMP Project1.00403D5C :*****
005F710A 8D40 00 LEA EAX,DWORD PTR DS:[EAX] :*****
005F710D EB 01 JMP SHORT Project1.005F7110
005F710F 90 NOP
005F7110 - E9 BBCBE6FF JMP Project1.00463CD0 :*****
還好沒有再變形要不就難了,好了整理一下:
push ebp
mov ebp,esp
add esp,-10
mov eax,463a98
call 405c34
MOV EAX,DWORD PTR DS:[4658F8]
MOV EAX,DWORD PTR DS:[EAX]
Call 0044EEB0
MOV ECX,DWORD PTR DS:[4659DC]
MOV EAX,DWORD PTR DS:[4658F8]
MOV EAX,DWORD PTR DS:[EAX]
MOV EDX,DWORD PTR DS:[46388C]
CALL 0044EEC8
MOV EAX,DWORD PTR DS:[4658F8]
MOV EAX,DWORD PTR DS:[EAX]
CALL 0044EF48
CALL 00403D5C
LEA EAX,DWORD PTR DS:[EAX]
嘿嘿,下面的一段全給pespin給吃光了,可惡!
到這裡就把所抽的程式碼給找回來了,但是執行一下暈倒,異常.看看變態呢
004011FC - FF25 F0825F00 JMP DWORD PTR DS:[5F82F0]
00401202 8BC0 MOV EAX,EAX
00401204 - FF25 EB825F00 JMP DWORD PTR DS:[5F82EB]
0040120A 8BC0 MOV EAX,EAX
0040120C - FF25 E6825F00 JMP DWORD PTR DS:[5F82E6]
00401212 8BC0 MOV EAX,EAX
00401214 - FF25 E1825F00 JMP DWORD PTR DS:[5F82E1]
0040121A 8BC0 MOV EAX,EAX
0040121C - FF25 0A835F00 JMP DWORD PTR DS:[5F830A]
00401222 8BC0 MOV EAX,EAX
00401224 - FF25 DC825F00 JMP DWORD PTR DS:[5F82DC]
0040122A 8BC0 MOV EAX,EAX
0040122C - FF25 05835F00 JMP DWORD PTR DS:[5F8305]
00401232 8BC0 MOV EAX,EAX
00401234 - FF25 D7825F00 JMP DWORD PTR DS:[5F82D7]
這個怎麼修復我現在還沒有任何方法解決:(還請高手們指點指點,謝謝!
文章就此打住,已是凌晨2點多了,不再寫了,如果可能明天再看看有沒有辦法修復好.
附一個脫VB的自動指令碼:
/*
//////////////////////////////////////////////////
PESpin 0.3x - 0.4x -> cyberbob Unpack Script v0.1(only for vb)
Author: loveboom
Email : bmd2chen@tom.com
OS : WinXP sp1,Ollydbg 1.1,OllyScript v0.85
Date : 02:06 2004-07-05
Config: Ignore other exceptions except 'Invalid or privileged instruction'
Note : If you have one or more question, email me please,thank you!
//////////////////////////////////////////////////
*/
code:
msgyn "Setting:Ignore other exceptions except 'Invalid or privileged instruction',Continue?"
cmp $RESULT,0
je lblret
var addr
var espval //esp value
var iatstart //iat start address
var cbase
var csize
gmi eip,CODEBASE
mov cbase,$RESULT
gmi eip,CODESIZE
mov csize,$RESULT
start:
dbh
run
esto
esto
lbl1:
gpa "LoadLibraryA","kernel32.dll"
bp $RESULT
esto
lbl2:
bc $RESULT
rtu
cmp eip,70000000
jb lbl3
sto
rtu
lbl3:
findop eip,#830A00#
cmp $RESULT,0
je lblabort
go $RESULT
mov iatstart,edx
rtr
sto
lbl4:
mov espval,esp //esp value
add espval,4 //esp+4
bphws espval,"r"
run
lbl5:
bphwc espval
bprm cbase,csize
run
lbl6:
bpmc
lblfixoep:
mov addr,eip
add addr,6
log "OEP is:"
log addr
mov [addr],68
add addr,1
mov espval,esp
add espval,4
mov [addr],[espval]
add addr,4
mov [addr],#E8F0FFFFFF#
add addr,5
log "IAT start address is:"
log iatstart
cmt addr,"Please Open log window,you will see iat start address."
lblend:
msg "Script by loveboom[DFCG][FCG],Thank you for using my script!"
lblret:
ret
lblabort:
msg "Error,Script aborted!,Maybetaget is not protect by PESpin 0.3x - 0.4x -> cyberbob"
ret
Greetz:
Fly,Jingulong,yock,tDasm,David,ahao,vcasm,UFO(brother),alan(sister),all of my friends and you!
By loveboom[DFCG][FCG]
Email:bmd2chen@tom.com
本程式碼的著色效果由xTiNt自動完成
下載xTiNt http://211.90.75.84/web/kanaun/download/xTiNt.rar
相關文章
- Stolen Code Found script-->PESpin
v0.32015-11-15
- 淺談SVKP 1.3X SDK stolen code 的找回2015-11-15
- 天翼之鏈2.46-stolen
code程式碼的找回2004-12-03
- ACProtect1.23的stolen code處理2015-11-15
- ASProtect 1.3B Stolen code Finder2015-11-15
- 也談ASProtect 1.3之stolen code的修復2015-11-15
- Asprotect
v2.0 Stolen code的一次修復旅程2004-11-19
- [原創]尋找Asp1.2X的Stolen
code的另一種方法2004-07-11
- 在Xcode6中找回失去的模板2014-07-24XCode
- PesPin
1.0外殼簡略分析2004-09-25
- PesPin 1.1外殼簡略分析2015-11-15
- 以殼解殼――ASProtect
1.23RC4殼的Stolen Code簡便解決方案2004-05-13
- 找回丟失的檔案2016-09-12
- GreptimeDB v0.7 釋出 — 全面支援雲原生監控場景2024-03-06
- 找回密碼的功能設計2019-02-07密碼
- 如何找回誤刪的檔案?2016-08-31
- 找回了我的老部落格2024-09-10
- 找回root密碼2007-10-03密碼
- wifi的密碼忘記了怎樣才能找回_自家wifi密碼忘了咋找回2020-08-12WiFi密碼
- Python找回文子串的方法2021-09-11Python
- Oracle快速找回被刪除的表2019-01-23Oracle
- Eclipse 刪除找回2017-03-17Eclipse
- 密碼找回功能可能存在的問題2020-08-19密碼
- 如何找回分割槽丟失的資料2022-12-24
- 藉助精益找回敏捷的質量2017-07-10敏捷
- rlwrap,找回原來的那個SQL*Plus2017-06-01SQL
- 怎麼找回失蹤的NTLDR檔案2017-11-23
- 找回Oracle中Delete刪除的記錄2012-07-17Oracledelete
- steam賬號被盜怎麼找回 steam找回帳號怎麼操作2022-07-13
- linux mysql 找回密碼2021-09-09LinuxMySql密碼
- Oracle忘記密碼找回2017-11-12Oracle密碼
- 怎麼找回電腦誤刪的檔案2022-06-14
- 如何找回oracle中被覆蓋的包體程式2016-09-19Oracle
- 利用Logmnr找回誤刪除的資料2008-11-28
- 怎麼找回失蹤的NTLDR檔案薦2007-02-14
- 誤刪檔案能找回嗎?簡單誤刪檔案找回教程分享2023-05-02
- 蘋果iPhone 6s plus丟失怎麼找回蘋果6被偷如何定位找回2016-08-07蘋果iPhone
- 利用rman的TSPITR技術找回刪除的表!2006-12-15