http://www.cracklab.ru/f/index.php?action=vthread&forum=3&topic=6732
里面注释是俄文的。


代码:
//////////////////////////////////////////////////////////////// // // EXECryptor 2.x IAT rebuilder by PE_Kill / REVENGE CREW v 1.9 // ------------------------------------------------------------- // Replace my values of iat_start and iat_end and run script!  // // ============================================================= // - HISTORY - // ============================================================= // [ v 0.x-1.7 ] // Private versions // // [ v 1.8 ] // Public version // // [ v 1.9 ] // ! Thanks pavka, for good BugReport // * tracing became some slower, but is more stable. // * little bugfixes in IAT reader. // ============================================================= // ////////////////////////////////////////////////////////////////  var _esp  var iat_start  var iat_end  var iat_cur  var addr  var counter  var flag  var c_gpa  var temp  var gmh  var ll  var ibase  var iend //================================================ // 软桷栲腓玷痼屐 IAT //================================================  mov iat_start,00471FF8  mov iat_end,00472EB4 //================================================ // 项塍鬣屐 桧纛痨圉棹 ?镳铞羼皴 //================================================ //================================================ // 项塍鬣屐 ImageBase 狃篁铎, ?? 铍 桧钽溧 礤  // 躅麇?溧螯 邈?眍痨嚯 耧铖钺铎 //================================================  mov addr,eip  and addr,FFFFF000  add addr,1000 @get_base:  sub addr,1000  mov temp,[addr]  and temp,0000FFFF  cmp temp,00005A4D  jne @get_base //================================================ // 铃疱?桤 觚溴疣 ImageSize, 眍 桧钽溧 牮栾蝾?邈? // 镱痱栩, 镱铎?狍溴?镥疱耱疣躅怅?.. //================================================  mov ibase,addr  mov temp,addr  add temp,3C  mov temp,[temp]  add temp,ibase  add temp,50  mov iend,[temp]  eval "ImageSize = {iend} ???"  msgyn $RESULT  cmp $RESULT,1  je @run  ask "Enter real ImageSize!"  mov iend,$RESULT @run:  add iend,ibase   //================================================ // 想篦噱?噤疱襦 老? 觐蝾瘥?桉镱朦珞弪 怵囡镥? //================================================  gpa "GetModuleHandleA","kernel32.dll"  mov gmh,$RESULT  gpa "LoadLibraryA","kernel32.dll"  mov ll,$RESULT //////////////////////////////////////////////////  mov _esp,esp  mov iat_cur,iat_start  sub iat_cur,4  mov c_gpa,0    // Cryptor GetProcAddress 礤桤忮耱磬 //================================================= // 骤觌 忸耨蜞眍怆屙? IAT //================================================= @imprec:  add iat_cur,4  cmp iat_cur,iat_end   // 暑礤?  ja @end  mov addr,[iat_cur]  cmp addr,0    // 朽玟咫栩咫?  je @imprec  cmp addr,ibase  jb @imprec  cmp addr,iend  ja @imprec  mov esp,_esp    // 骂耨蜞磬怆桠噱?耱尻  mov eip,addr    // 埋蜞屐 磬 怵囡镥?  mov [esp],eip    // 软钽溧 牮栾蝾?麒蜞弪 徉轵 镱 噤疱耋 忸玮疣蜞  mov counter,25    // 痒弪麒?蝠囫耔痤怅?  mov flag,0    // 丸麇泐 礤 磬殇屙? //================================================== // 腮屐 觐爨礓?镳钼屦觇 忭篁疱眄彘 IAT //================================================== @chk_run:  dec counter  cmp counter,0    // 篷腓 聍弪麒?钺眢腓腭  je @find_gpa    // 翌 桎屐 磬 Cryptor gpa  sti      // 腻豚屐 ?  mov temp,[eip]   // 阻蜞屐 徉轵??eip  cmp flag,0    // 篷腓 妁?龛麇泐 礤 磬殇屙?  ja @chk_jnz  and temp,0000FFFF   // 腮屐 OR EAX,EAX  cmp temp,0000C009  jne @chk_run    // 湾?耠邃簋? 觐爨礓?  inc flag    // 袜? 恹耱噔?屐 綦嚆  jmp @chk_run    // 蠕屐 磬 耠邃簋?觐爨礓? @chk_jnz:  and temp,0000FFFF   // 腮屐 JNZ xxxxxxxx  cmp temp,0000850F  jne @chk_run    // 湾?耠邃簋? 觐爨礓?  mov !ZF,1     // 泥 磬? 泐忸痂?牮栾蝾痼, 黩?忭篁疱眄 IAT 矬耱? @find_gpa:  cmp c_gpa,0    // 袜?腓 禧 噤疱?Cryptor GetProcAddress?  jne @trace    // 篷腓 磬?蝾 桎屐 磬 镱塍麇龛?噤疱襦 老?  bphws gmh,"x"    // 软圜?耱噔桁 狃?磬 GetModuleHandleA  bphws ll,"x"    // ?磬 LoadLibraryA  ticnd "WORD [eip]==453Bh" // 蝠囫耔痼屐, 镱赅 礤 漕殇屐 漕 耩噔礤龛 觚?  bphwc ll    // 耥桁噱?狃觇 ?老?  bphwc gmh  cmp eip,gmh    // 帖 磬 GetModuleHandleA?  jne @chk_ll    // 湾?耠邃簋? 镳钼屦赅...  bp [esp]    // 软圜?镥疱躅滂?磬 噤疱?忸玮疣蜞  run  bc eip  jmp @find_gpa    // 耥钼?桎屐 磬 镱桉?Cryptor GetProcAddress @chk_ll:  cmp eip,ll    // 帖 磬 GetModuleHandleA?  jne @f_jnz    // 湾?耠邃簋? 镳钼屦赅...  bp [esp]    // 软圜?镥疱躅滂?磬 噤疱?忸玮疣蜞  run  bc eip  jmp @find_gpa    // 耥钼?桎屐 磬 镱桉?Cryptor GetProcAddress //================================================= // 义镥瘘 棂屐 jnz xxxxxxxx //================================================= @f_jnz:  sti  mov temp,[eip] // 659F850F  and temp,0000FFFF  cmp temp,0000850F  jne @f_jnz  mov !ZF,1    // 羼腓 磬? 蝾 ?Z 腩骅?邃桧梓牦, 赅?狍潋?觚 耦怙嚯? //================================================== // 义镥瘘 棂屐 怛铕簋 镱 聍弪?觐爨礓?ADD EAX,DWORD PTR SS:[EBP-4] //==================================================  mov counter,2     @f_add:  sti  mov temp,[eip] // 68FC4503  and temp,00FFFFFF  cmp temp,00FC4503  jne @f_add  sti  dec counter  cmp counter,0  jne @f_add   mov c_gpa,eip    // 义牦?噤疱??狍溴?噤疱耦?Cryptor GetProcAddress  sub iat_cur,4    // 骂玮疣屐 箨噻囹咫?磬 IAT ?镳彐礤?镱腩驽龛?  jmp @imprec    // 骂玮疣屐? ?鲨觌 忸耨蜞眍怆屙? 壤? //================================================== // 项塍麇龛?噤疱襦 老?.. //================================================== @trace:  bphws c_gpa,"x"  run  bphwc c_gpa  cmp eip,c_gpa  jne @error  mov [iat_cur],eax  jmp @imprec @end:  msg "OK!"  pause ret @error:  msg "error!!!"  pause ret