📄 asprotect 2.txt
字号:
// Script for OllyScript plugin by SHaG - http://ollyscript.apsvans.com/* ////////////////////////////////////////////////////// ASProtect 2.0 RC 06.2X import & scrambled code recovery (only Delphi & Imagebase = 400000)// Author: Mario555 // Email : Mario555@pisem.net // OS : WinXP SP1, OllyDbg 1.10, OllyScript v0.92 // Note : Olly must be hide (IsDebuggerPresent) // !!! This script not fix Initialization Table (call eax), you must fix it manually. // !!! some emulated api not determined by script, addresses of jmp [emul api] see at log (red letters).// usually this api = GetProcAddress, but I am not sure that always GetProcAddress ;)////////////////////////////////////////////////////*/ var cbasegmi eip, CODEBASEmov cbase, $RESULTlog cbasevar csizegmi eip, CODESIZEmov csize, $RESULTlog csizevar kvar lvar cvar bvar functionvar firstvar a1var a2var a3var a4var a5var a6var iat_addrvar wr_addrvar mhandlevar mhandle_oldvar iat_addr_oldvar lastvar mem_check2var DllBasevar imbasevar asecvar tempvar temp2var redirectvar apvar paddrvar savevarvar CmpEmulvar CmpEmulProcvar tvar EmulProcvar CodeRedirectvar credirprocmov b,0mov c,0mov mhandle_old,0mov first,0mov iat_addr, 400000mov imbase, 400000add iat_addr, [40027c] log iat_addrmov temp, 4002f4asecn:add temp, 28mov temp2, [temp]add temp2, imbasemov temp2,[temp2]cmp temp2, 03e86090je asecf cmp temp2, imbaseje asecnfjmp asecnasecnf:msg "AsprSection not found"retasecf:mov asec, [temp]add asec, imbaselog asecadd temp, 28mov CodeRedirect, [temp]add CodeRedirect, imbaselog CodeRedirectgpa "VirtualAlloc", "kernel32.dll" bp $RESULTeoe lab_DllBaseeob lab_DllBaserunlab_DllBase:inc bcmp b, 2jne loc_DBnbc $RESULTcobcoertumov DllBase, eaxlog DllBaseeoe lab_firsteob lab_firstmov b, 0loc_DBn:estolab_first:find DllBase, #C700CA00000033C0#mov redirect, $RESULTfind redirect, #8D43088B4B04#mov redirect, $RESULTsub redirect, 6bp redirecteoe lab1eob lab1estolab1: cmp eip, lastje lab_last cmp eip, mem_check2je lab_mem_check2 cmp eip, redirectje loc_redirectcmp eip, savevarje loc_savevarcmp eip, CmpEmulje loc_CmpEmulcmp eip, credirprocje loc_coderedirectcmp c,0a je lab_Breaks add c,1 esto loc_redirect:bc redirectadd redirect,2mov redirect, [redirect]mov ap, asecadd ap, 7000mov [redirect], aplog "-=-=-=-=-=-"log "redirected to"log aplog "-=-=-=-=-=-"mov temp, espsub temp, 30mov temp, [temp]log templog "-=-=-=-=-=-"add ap, tempmov [ap], #608B74242083C4EC33C08BE88944240C90909090908B068944240483C6048B168BC280EA080F92C280FA0175118BC88D5C243090E8C00000008BE890909083C6048B06894424089083C6048B168BC280EA080F92C280FA0175118BC88D5C243090E8930000008944240C90036C24048B4424080344240C89442410909083C6048B0683F800741283F801741583F802741F83F8037426EB3B908B6D00EB359090908B4424108B0089442410EB2690909033C08A45008BE8EB1A9090908B4424100FB60089442410EB0A909090909090909090908B5424108BC5E82500000083C4146183042414FF7424C49DC390909090909090909090909090C1E0022BD88B03C390902BD09C58C3# log apmov EmulProc, apadd ap, 109estoloc_savevar:bc savevarmov savevar, [401000]mov [401000], apestolab_Breaks:log "breaks"mov c, 0bvar addrmov addr, DllBasefind addr, #68C8000000E8????????0143085E5BC3#mov temp, $RESULTsub temp, 5mov [temp], #3bc090# log tempfind addr, #837C24200074448B44240C8B542420#mov temp, $RESULTsub temp, 10log tempmov a1,tempbp tempadd temp, 125mov a2,tempbp tempadd temp, 0a9mov a3,tempbp tempadd temp, 52mov a4,tempbp tempsub temp, 4fmov a5, tempbp a5find addr, #5E5B5DC21800#mov a6, $RESULTbp a6add temp, 0d3bpl temp, "esi" find addr, #0F857AFFFFFF8B45FC5F5E5B#mov mem_check2, $RESULTadd mem_check2, 0fbp mem_check2log mem_check2find addr, #8B45FC8B0085C0752B#mov last, $RESULTadd last, 0flog lastfind addr, #8BF003731C03736C8B53208BC6#mov paddr, $RESULTadd paddr, 8mov savevar, paddrsub savevar, 3log savevarbp savevarmov [paddr], #8BCF908BC3E8A3FCFFFF#find addr, #2C0272127443FEC80F848F000000#mov paddr, $RESULTadd paddr, 8log paddrmov [paddr],#EB3F90909090E9EB0000009090908B45F88B406C03F8897DF0837DF0FF75110345F48B55F803420C8945F0E9CE0000008B45F88B401C0145F0E9C000000090909033C08A43048B55F88B5482448BC6FFD28B1D001040008BCB66C7030F8043000343894DF08B45F88B401C0345F48B55F803426C2BC383E80489038B45F803781C8B45F803786C83C304C603E9432BFB83EF04893B8305001040000B909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909033C05A5959648910EB1790909090909090909090909090909090909090909090909090908B45F0908B742404C606E92BC683E8059090909090909090909090909090909090905F5E5B8BE55DC3#mov CmpEmul, paddrsub CmpEmul, 2bp CmpEmulfind addr, #5356575583C4EC8BF98914248BD8#mov CmpEmulProc, $RESULTmov [CmpEmulProc], #5356575583C4EC8BF98914248BD88D732833ED33C08944240C90909033C08A46078B5483448BC7FFD28944240433C08A46058B5483448BC7FFD2BA001040008B12538B5C2408891A5B83C204890283C2048305001040000833C08A46088B5483448BC7FFD28944240833C08A46068B5483448BC7FFD2BA001040008B12538B5C240C891A5B83C204890283C2048305001040000890909090909090909090909090909090909090909033C08A46098B5483448BC7FFD2BA001040008B1289028305001040000483C4145D5F5E5B9033C08A43048B55F88B5482448BC6FFD28B1D001040008BCB66C7030F804300034383E919894DF0C3#find addr, #8B008B388B5D088B4304#mov credirproc, $RESULTadd credirproc, 0fbp credirproceob lab2eoe lab2estoloc_CmpEmul:mov t, [401000]mov [t], 0e8mov temp, EmulProcsub temp, tsub temp, 5 inc tmov [t], tempadd [401000], 5mov ecx, esimov t, ebpadd t, 0cmov edx, [t]sub t, 14mov eax, [t]sub esp, 4add eip, 67mov [esp], eipmov eip, CmpEmulProcestoloc_coderedirect:mov eax, CodeRedirectmov temp, ebxadd temp, 4add CodeRedirect, [temp]add CodeRedirect, 10sub temp, 4mov temp, [temp]add temp, imbaselog "----------------------"log "coderedirect address:"log templog "----------------------"estolab2:cmp eip, a1je loc_impcmp eip, a2je loc_impcmp eip, a4je loc_impcmp eip, a3je loc_imp2cmp eip, a5je loc_imp21cmp eip, a6je loc_imp_ordjmp lab1loc_imp:mov k, espadd k, 14mov mhandle, [k] cmp mhandle, mhandle_oldje loc1mov mhandle_old, mhandleadd iat_addr, 4loc1:cmp first,0mov first,1je loc3loc2:sub wr_addr,2 mov [wr_addr], #ff25#add wr_addr,2 mov [wr_addr], iat_addr_oldmov [iat_addr_old], functionloc3:mov wr_addr, esimov function, eaxmov iat_addr_old, iat_addradd iat_addr, 4runloc_imp2:mov mhandle, eax cmp mhandle, mhandle_oldje loc22mov mhandle_old, mhandleadd iat_addr, 4loc22:sub wr_addr,2 mov [wr_addr], #ff25#add wr_addr,2 mov [wr_addr], iat_addr_oldmov [iat_addr_old], functionmov k, espadd k, 0cmov k, [k]runloc_imp21:mov l, espsub l, 14mov l, [l]add k, ladd k, 400000mov wr_addr, kmov k, espsub k, 24mov k, [k]mov function, kmov iat_addr_old, iat_addradd iat_addr, 4// log function// log wr_addrrunloc_imp_ord:mov k, espsub k, 8mov mhandle, [k]cmp mhandle, mhandle_oldje loc_imp_ord_2mov mhandle_old, mhandleadd iat_addr, 4loc_imp_ord_2:sub wr_addr,2 mov [wr_addr], #ff25#add wr_addr,2 mov [wr_addr], iat_addr_oldmov [iat_addr_old], functionmov wr_addr, eaxsub k, 10mov function, [k]mov iat_addr_old, iat_addradd iat_addr, 4runlab_mem_check2:log "mem_check2"inc bcmp b, 2je loc_check2estoloc_check2:bp lastestolab_last:log "last"sub wr_addr,2 mov [wr_addr], #ff25#add wr_addr,2mov [wr_addr], iat_addr_oldmov [iat_addr_old], functionmov [401000], savevarcmp ecx, 0jne loc_stolenbprm cbase, csize eob loc_endeoe loc_endestoloc_end:Msg "OEP finded"bpmcjmp loc_clearloc_stolen:stististististiMsg "Scrambler(VM) removed, dump and set EP here"loc_clear:bc a1bc a2bc a3bc a4bc a5bc a6bc lastbc mem_check2log "-=-=-=-=-=-=-=-=-=-"log "+ script finished +"log "+ Mario555 +"log "-=-=-=-=-=-=-=-=-=-"ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -