吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3603|回复: 0
收起左侧

[C&C++ 转载] 【笔记】pe导出表的address of names的rva地址转换为offset

[复制链接]
2016wapjpc 发表于 2016-6-13 12:04
本帖最后由 奋斗丶小Z 于 2016-6-15 10:14 编辑

一周多的时间对照自己的代码,查找baidu,对照winhex打开的dll,一边看一边写,错了改,经过昨晚的写,再写,
今天中午还是写出来了。好高兴呀!
不难看出AddressOfNames;就是存放导出函数的一个数组RVA了。但是这里有一个小问题。导致我在这个问题上花了半天时间。
AddressOfNames;中存放的确实是一个RVA(相对地址),但是不是直接指向函数数组的,而是指向了一个存放地址的数组也就是一个DWORD数组,
这个数组的每一个元素存放一个导出函数的RVA.我们在学习pe时,在这里要经过两重转换,先把AddressOfNames这个va的值转换成offset,
再加上(DWORD)pFileBuffer的值,用一个指针DWORD* x指向这里,这才是把的函数rva地址取到了,在经过文件偏移的转换,才能把这个值当成函数的地址,
在用printf("FunNames : %s \n",(PBYTE)((DWORD)pFileBuffer + dwFob1)); 才能取到它的名字。

打印出函数名了

打印出函数名了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-9-23 09:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表