ShellCode编写历程

 

获取dll列表,并定位kernel32.dll:
  
寻找方式如下:
名称:  2.JPG
查看次数: 2204
文件大小:  14.8 KB
获得kernel32基地址后,
               
               
在kernel32基址+0x3c处获取e_lfanewc地址,即可以得到PE头
先了解一下PE格式:
每个windows的PE格式如下:
               
               
DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n
PE头其实就是如下结构:
IMAGE_NT_HEADERS STRUCT 
Signature dd ‘PE/0/0’
FileHeader IMAGE_FILE_HEADER <>
OptionalHeader IMAGE_OPTIONAL_HEADER32 <>
IMAGE_NT_HEADERS ENDS
其中,opt结构里含有
IMAGE_DATA_DIRECTORY,在这里可以找到导入表地址。
IMAGE_OPTIONAL_HEADER32 STRUCT
....
LoaderFlags dd ?
NumberOfRvaAndSizes dd ?
DataDirectory IMAGE_DATA_DIRECTORY 16 dup(<>)
IMAGE_OPTIONAL_HEADER32 ENDS
image_data_directory数组里的第13个元素既是导入表相关结构,而第一个元素为导出表相关结构。

                  
                  
Member Info inside
0 Export symbols
1 Import symbols
2 Resources
3 Exception
4 Security
5 Base relocation
6 Debug
7 Copyright string
8 Unknown
9 Thread local storage (TLS)
10 Load configuration
11 Bound Import
12 Import Address Table
13 Delay Import
14 COM descriptor

 

data directory结构如下:

 

IMAGE_DATA_DIRECTORY STRUCT
VirtualAddress dd ?
isize dd ?
IMAGE_DATA_DIRECTORY ENDS

 

其中只包含地址和大小。

定位到Export表,其中

 

共有11 个成员,常用的列于下表。

 

Field NameMeaning
nName模块的真实名称。本域是必须的,因为文件名可能会改变。这种情况下,PE装载器将使用这个内部名字。
nBase基数,加上序数就是函数地址数组的索引值了。
NumberOfFunctions模块引出的函数/符号总数。
NumberOfNames通过名字引出的函数/符号数目。该值不是模块引出的函数/符号总数,这是由上面的NumberOfFunctions给出。本域可以为0,表示模块可能仅仅通过序数引出。如果模块根本不引出任何函数/符号,那么数据目录中引出表的RVA为0。
AddressOfFunctions模块中有一个指向所有函数/符号的RVAs数组,本域就是指向该RVAs数组的RVA。简言之,模块中所有函数的RVAs都保存在一个数组里,本域就指向这个数组的首地址。
AddressOfNames类似上个域,模块中有一个指向所有函数名的RVAs数组,本域就是指向该RVAs数组的RVA。
AddressOfNameOrdinalsRVA,指向包含上述 AddressOfNames数组中相关函数之序数的16位数组。


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值