📄 asprotect 2.xx iat recovery.txt
字号:
// eax = API addr// ecx = start IAT// edx = end IAT// ebx = addr stolen redir// esi = current DLL// edi = lost DLLvar LoadLibraryvar scan_startvar scan_endvar addr_curvar tempvar IAT_startvar IAT_endvar DLL_curvar DLL_lostvar addr_findervar addr_iat_rebvar stackvar countervar type_apivar OEPask "Enter start IAT:"cmp $RESULT,0je @haltmov IAT_start ,$RESULTask "Enter end IAT:"cmp $RESULT,0je @haltmov IAT_end ,$RESULTmov type_api,15msgyn "Do you want to use opcod "call" (FF15) for recovering redirector? If you choose "No" will be used opcod "jmp" (FF25)."cmp $RESULT,1je @initmov type_api,25@init:mov counter,0mov OEP,eipmov temp,eipmov scan_start,[eip] mov [eip],#6A00#stoadd temp,4mov scan_end,[temp]asm eip,"call GetModuleHandleA"stomov eip,OEPmov [eip],scan_startmov [temp],scan_endmov scan_start,eaxadd scan_start,1000mov scan_end,scan_startgmi scan_start,CODESIZEadd scan_end,$RESULTmov eip,scan_startsub eip,200mov [eip],#60413BCA73138039E875F68B410103C183C0056683F80075E861#stomov stack,espmov addr_finder,eipmov ecx,scan_startdec ecxmov edx,scan_endadd eip,18bp eipsub eip,18@find_aspr_call: mov eip,addr_finder run cmp ecx,edx jae @end cmp eax,7FFE0000jae @find_aspr_call mov aspr_call,eax find aspr_call,#EB01# cmp $RESULT,0je @find_aspr_call mov temp,$RESULT sub temp,aspr_call cmp temp,10jbe @repuild_api_init find aspr_call,#EB02CD20# cmp $RESULT,0je @find_aspr_call mov temp,$RESULT sub temp,aspr_call cmp temp,10ja @find_aspr_call@repuild_api_init: bc eip sub eip,18 mov [eip],#413BCA73118039E875F68B410103C183C0053BC375EA61# add eip,16 bp eip mov addr_cur,scan_start dec addr_cur inc eip mov addr_iat_reb,eip mov [eip],#5750E8099E407C9083C1043BCA7706390175F5EB0F3BF77409C7010000000083C104890166C703FF00894B02# add eip,2 asm eip,"call GetProcAddress" add eip,5 bp eip add eip,25 bp eip sub eip,4 add [eip],type_api gpa "LoadLibraryA","kernel32" findop $RESULT,#C20400# mov LoadLibrary,$RESULT bphws LoadLibrary, "x"@START:mov DLL_lost,00000000@repuild_api: mov esp,stack mov eip,addr_finder mov ecx,addr_cur mov edx,scan_end mov ebx,aspr_call run cmp ecx,edx jae @end inc counter mov addr_cur,ecx mov eip,addr_cur run cmp eip,LoadLibrary jne @ERR_BP_AT_API_NOT_WORK mov DLL_cur,eax mov eip,addr_iat_reb run mov ecx,IAT_start sub ecx,4 mov edx,IAT_end mov ebx,addr_cur mov esi,DLL_cur mov edi,DLL_lost bc eip run sub eip,25 bp eip mov DLL_lost,DLL_cur cmp ecx,edx jbe @repuild_api mov IAT_end,ecxjmp @repuild_api@end: mov esp,stack mov eip,addr_finder add eip,16 bc eip sto mov eip,addr_iat_reb add eip,7 bc eip add eip,25 bc eip dec addr_finder fill addr_finder,44,00 bphwc LoadLibrary mov eip,OEP bp eip ai bc eip eval "Script finished! In total {counter} functions are restored!" msg $RESULT@halt:pauseret@ERR_BP_AT_API_NOT_WORK:msg "[Error!] BreakPoint at 'LoadLibrary' not work!"jmp @end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -