我是某个进程的内存空间中加载的DLL。我是此过程中存在的许多 DLL 的一部分,有些是动态加载的,有些是静态加载的。
有一个“数据宝石”让我在这个进程空间的某个地方发现,我们假设它在一个“数据”段中(即不是在一些奇怪的自我修改代码中)。
我需要找到它。我需要搜索内存,例如做一个 memcmp() 但我不知道从哪里开始寻找。也许我可以从 0 到 many-gigs 进行暴力搜索,但这会引发读取访问或仅执行异常,也许我将能够处理这些异常,这样我就不会降低整个过程。但这听起来很狡猾。
有没有更智能的搜索方式?在我的脑海中,我可以查看主进程的数据段,因为有一种方法可以从 NT 标头中获取地址范围,而且我确实知道我已经加载的进程。然后我可以枚举所有加载的 DLL 并查看它们的空间。
谁能建议一种方法,甚至告诉我我是否走在正确的轨道上?