Skip to content

zh_get_maps

伏秋洛 edited this page Jun 14, 2023 · 1 revision

获取Maps

Maps可以用于获取基址或者遍历内存。

例子

#include "process.h"
#include "proc.h"

using namespace hak;

TEST(GetMaps, Main) {
    std::string packageName = "bin.mt.plus";
    try {
        auto pid = hak::find_process(packageName);
        std::cout << "pid: " << pid << "\n";
        auto process = std::make_shared<hak::process>(pid);
        process->set_memory_mode(memory_mode::SYSCALL);

        auto maps = process->get_maps();
    } catch (std::exception& e) {
        std::cout << "error: " << e.what() << "\n";
    }
}

上面的代码。我们草草的获取的所有内存范围的maps。

指定内存范围

#include "process.h"
#include "proc.h"

using namespace hak;

TEST(GetMaps, Main) {
    std::string packageName = "bin.mt.plus";
    try {
        auto pid = hak::find_process(packageName);
        std::cout << "pid: " << pid << "\n";
        auto process = std::make_shared<hak::process>(pid);
        process->set_memory_mode(memory_mode::SYSCALL);

        auto maps = process->get_maps(memory_range::AS | memory_range::JH);
    } catch (std::exception& e) {
        std::cout << "error: " << e.what() << "\n";
    }
}

这样我们就指定了内存范围AS和JH。