💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
IAT(Import Address Table:输入函数地址表): 为解决不同操作系统dll文件的兼容性问题而产生。 程序调用了一些系统API,IAT的作用就是在不同系统中实现API调用。 * * * * * **手动查找并修复IAT** 输入表重建程序:IREC 查找IAT起始地址: 在入口点下找一个call ,比如地址为425210(IREC验证一下) 或 搜索FF15 FF25 想下面这样的指令 call [dword],0x?????(内存地址) jmp [dword],0x?????(内存地址) 命令行:D 425210(数据窗口跟随) ,向上向下查找到全都是000的地址 IREC中RVA填iat起始值,size填结束值1000 显示无效函数,剪切掉,重新转存 * * * * * **误解** 1.加了壳程序无法破解 2.加了壳的程序找不到字符串 不脱壳破解可以打内存补丁,时机很重要 **一般脱壳流程**: 调试器(反调试) 被脱壳的文件 OEP(偷OEP,藏OEP) dump(.bss) 修复iat(先跳到内存地址再到IAT) 如果IREC无效函数过多,用OD脚本修复 ———————————————— **UPX脱壳并修复IAT脚本** ———————————————— 例程: https://pan.baidu.com/s/1cmIQbssfmgoc4Vnjl5ed7w ~~~ mov iat_b,00432000 ;IAT起始地址,给变量赋值 mov iat_e,00432554 ;IAT结束地址下一句 sti ;pushad 单步 bphws esp,"r" ;hr esp 硬件断点 run sti sti sti ;到了jnz bp eip ;F4运行到下一行 @LOOP: run cmp esp,eax jnz @LOOP sti sti sti MSG "到OEP了" @IAT_LOOP: mov iat,[iat_b] cmp iat,0 je @NEXT_LOOP mov api,[iat+1] mov [iat_b],api ;重建iat @NEXT_LOOP: add iat_b,4 cmp iat_b,iat_e jne @IAT_LOOP MSG "OK IAT 修复已经完成" ret ~~~ ;mov iat,[iat_b] ;把00432000内存里面值拿出来,而不是拿出来00432000 ;UPX的壳段代码是差不多的,那么这个脚本就可以用来找这个upx版本所有加壳程序的OEP,而且不用管ASLR的问题 作业: https://pan.baidu.com/s/1Antw0tybvTb9N-m41U4JWg