首页
社区
课程
招聘
手工构造import表的问题
发表于: 2006-10-23 15:22 5852

手工构造import表的问题

2006-10-23 15:22
5852
我把原来的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作者讲授!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
加到OD后提示:应用程序正常初始化失败(0xc00000005)
2006-10-23 15:25
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
哪位写过壳的大侠给讲讲好吗?
原来的
我都想了好久了   PE文档也看烂了   就是找不出原因
2006-10-23 15:52
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
最好把源码和做好的程序放上来,这样才好找原因。
2006-10-23 16:10
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
我把写好的程序和源码给发上来了
代码写得很烂   希望不要介意
2006-10-23 16:18
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
这是源码和程序
上传的附件:
2006-10-23 16:20
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
目前有一些问题,你自己得去完善,如资源的处理,TLS处理(没TLS的,你也强加上)等。

请Hying分析了一下原因:

不能被OD加载,是输入表处理有问题了,正常的输入表结构:
IMAGE_IMPORT_DESCRIPTOR STRUCT
  union
    Characteristics dd ?
    OriginalFirstThunk dd ?
  ends
  TimeDateStamp dd ?
  ForwarderChain dd ?
  Name1 dd ?
  FirstThunk dd ?
IMAGE_IMPORT_DESCRIPTOR ENDS

你的问题: FirstThunk  这个他指向自身了。
一般OriginalFirstThunk 和FirstThunk指向同一张表,或者OriginalFirstThunk指向原始的表,FirstThunk指向要填充的表,现在他的FirstThunk指向了自己的位置这个错误不知道引起了系统的什么毛病。

原始的:
@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 offset thunk1
dd 00h
dd 00h
dd offset kernel_dll
dd offset thunk1
dd offset thunk2
dd 00h
dd 00h
dd offset user_dll
dd offset thunk2
dd 00h
dd 00h
2006-10-23 17:12
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
其实原来我是将FirstThunk指向一个别的地方作为新的IAT
但是是有问题的  我就用了看一下obsidium 发现它是指向自身的  我就改了
还有资源的处理  我真想不出原因   因为实在是想不出才向各位大虾求救的
2006-10-23 17:43
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
再说明一下:
TLS是我自己瞎想的给程序加的
因为不知道方法
2006-10-23 17:56
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10
虽然我不会写壳,但支持楼主,加油!!!
写好后放一个unpackme出来,
2006-10-24 10:31
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
楼上的兄弟见笑了  我这也叫壳   叫小儿科还差不多!
我用IDA载入了一下  发现有提示说IMPORT表不能在.rscr中
看来只能另外开一个段了  还不知道行不行呢!
研究中…………
2006-10-24 14:54
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
这个软件我已经弄好了
试一个notepad  结果晕死
一运行直接退出
还要请大家帮忙想想  我跟了一下到
010074A6   .  E8 27010000   call    <jmp.&msvcrt._initterm>
没改的notepad和我改完的就不同了
想不出原因
用OD载入就是OEP了  按下F4就变成原NOTEPAD代码了(免得跟了,不想让大家浪费时间)
我没加任何ANTI
上传的附件:
2006-10-28 13:38
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
不用劳烦大家了
我以为自己的hook-api做得应该可以了  没想到在API调用另一个API时有问题了
如果当误您的阅读时间   我在这里向您道歉
2006-10-28 18:20
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
14
mov eax,0
stosd
mov eax,00h
stosd
很久没有看到这么不可饶恕的代码了
2006-10-28 20:49
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
没办法   汇编学得不好  我一直都不知道该如何把汇编写得更艺术
不会走之前还是别学跑了吧
2006-10-28 21:43
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
16
我倒时间没去看,才发现有这样的代码
mov eax,0   
建议楼主先看看汇编方面的教程,如何精简指令长度
2006-10-29 16:41
0
雪    币: 70
活跃值: (74)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
有那样的代码吗  最起码的xor eax,eax 我还是知道的  我记得自己没写过呀
呵呵  不管有没有都得好好学学了  
努力…………
2006-10-29 19:32
0
游客
登录 | 注册 方可回帖
返回
//