我把原来的PE文件import改了 想改为自己的:
构造的结构如下:
@IAT_NEW:
dd offset thunk1
dd 00h
dd 00h
dd offset kernel_dll
dd 00
dd offset thunk2
dd 00h
dd 00h
dd offset user_dll
dd 00h
dd 00h
dd 00h
dd 00h
dd 00h
dd 00h
kernel_dll db 'kernel32.dll',0
thunk1 dd offset api_1
dd 00h
user_dll db 'user32.dll',0
thunk2 dd offset api_2
dd 00h
下面是代码(主要是将RVA添入)
write_Import proc ;构造新的import
push eax ;这个是IMPORT表的地址
mov edi,eax
mov eax,offset @IAT_NEW ;先将import表添好
sub eax,offset @beginaddcode
add eax,ebx
mov eax,0
stosd
mov eax,00h
stosd
lea edi,@IAT_NEW
mov eax,[edi]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi],eax
mov eax,[edi+0ch]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi+0ch],eax
lea eax,[edi+10h]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi+10h],eax
mov eax,[edi+14h]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi+14h],eax
mov eax,[edi+20h]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi+20h],eax
lea eax,[edi+24h]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi+24h],eax
lea edi,thunk1
mov eax,[edi]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi],eax
lea edi,thunk2
mov eax,[edi]
sub eax,offset @beginaddcode
add eax,ebx
mov [edi],eax
pop eax
ret
write_Import endp
上面代码我没用宏写
我加完后 用LOADPE打开这个文件发现这个IMPROT存在 且是我构造的那个
但是为什么一用OD调试 就提示不可加载呢 在断到系统领空之前就有错了
自己构造IMPROT表有什么要求吗?
[课程]FART 脱壳王!加量不加价!FART作者讲授!