-
Notifications
You must be signed in to change notification settings - Fork 54
zh_scan_memory
伏秋洛 edited this page Jun 14, 2023
·
2 revisions
目标是做成GG那样的修改器,必不可少的就是扫描内存的功能了!
#include "process.h"
#include "searcher.h"
using namespace hak;
auto process = std::make_shared<hak::process>(pid);
process->set_memory_mode(memory_mode::SYSCALL);
auto searcher = hak::memory_searcher(process);
上述代码创建了一个名为searcher的内存扫描器。
auto size = searcher.searchNumber("1D;2D;0D;1D", type_i32, EQ);
std::cout << "search result size: " << size << "\n";
size = searcher.filterNumber("2D;0D;1D", type_i32, EQ);
std::cout << "filter result size: " << size << "\n";
我们利用searcher执行方法searchNumber搜索了一个组合体'1D;2D;0D;1D', 不像GG修改器那样,我们并不打算支持自定义组合体的最大大小,我们默认认为一个组合体应该在连续的内存的内存页上,我们同样不支持GG修改器的无序搜索,我们要求的组合体数据是有序的。
searchNumber和filterNumber返回的内容是搜索/过滤结果的数量。
std::unordered_set<pointer> results = searcher.get_results();
searcher.clear_results();
我们可以使用 get_results() 方法获取所有的搜索结果,也可以执行 clear_results() 清空搜索结果。
searcher.set_memory_range(memory_range::A | memory_range::XS);
我们可以通过上述代码设定要搜索的范围,不同于其他的那些所谓的MemoryTools,我们的内存范围界定和GG修改器几乎一致。
searcher.set_search_range(0, 0xfffffffff);
我们可以通过上述代码设定要搜索的指针范围。
searcher.set_search_range(0, 0);
这样就可以清空指针范围的限制。
searcher.set_ignore_missing_page(true);
searcher.set_ignore_swapped_page(true);
上诉代码忽略了对缺页的或被换出的内存页的检测,当设置为 true 的时候,searcher将会扫描这些内存地址。
Only through learning and communication!