我目前正在开发一个程序,这个想法涉及扫描进程中的所有字节(注入dll的过程),如果在字节处找到函数,则返回信息并继续扫描。
我唯一的问题是 - 扫描进程中所有字节(当前进程)并检查扫描的字节是否为函数的最有效方法是什么?
答案 0 :(得分:0)
扫描内存中一个字节的最有效方法是使用任何专门的处理器指令。
将数据传输到处理器的数据缓存中,然后扫描它。
如果可以,请提取适合处理器字长的字节大小。例如,ARM7TDMI处理器具有32位字长,这意味着它一次可以获取4个字节。因此,处理器最有效地获取四个字节的倍数。
有关更多详细信息,我们需要有关您的平台的更多详细信息,包括操作系统和处理器。
答案 1 :(得分:0)
如果要扫描更多未导出的函数,下一步可能是反汇编代码并查找Call
指令,然后将每个指令的目标地址保存为函数的入口点。
实际上,这不太可能做很多好事 - 能够在不知道他们是/做的情况下记录功能可能会产生大量输出,但很少有真实的信息。