获取导入表的大小

uint32_t get_iat_size(PIMAGE_DOS_HEADER dos_header,uint32_t import_rva)
{
	if (import_rva == 0)//ntdll没有导入表
	{
		return 0;
	}
	LPBYTE import_va = (LPBYTE)dos_header + import_rva;
    PIMAGE_IMPORT_DESCRIPTOR imp_desc = (PIMAGE_IMPORT_DESCRIPTOR)import_va;
	uint32_t	iat_fun_number = 0;
    while (true)
	{
        if (imp_desc->Name)
        {
            
            PIMAGE_THUNK_DATA thunk1 = (PIMAGE_THUNK_DATA)((LPBYTE)dos_header + imp_desc->OriginalFirstThunk);
            for (;;)
            {
                
                if (thunk1->u1.Ordinal == 0)
                {
                	iat_fun_number++; //函数结尾0算一个函数
	                break;
                }
            	
				iat_fun_number++;
                thunk1 += 1;
            	
            }
            imp_desc += 1; //下一个dll导入函数数组
        	
        }
        else
        {
            break;
        }
    }
	return iat_fun_number * sizeof(PVOID);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值