/* Copyright (c) 2013-2017 Jeffrey Pfau * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef CORE_MEM_SEARCH_H #define CORE_MEM_SEARCH_H #include CXX_GUARD_START #include enum mCoreMemorySearchType { mCORE_MEMORY_SEARCH_INT, mCORE_MEMORY_SEARCH_STRING, mCORE_MEMORY_SEARCH_GUESS, }; enum mCoreMemorySearchOp { mCORE_MEMORY_SEARCH_EQUAL, mCORE_MEMORY_SEARCH_GREATER, mCORE_MEMORY_SEARCH_LESS, mCORE_MEMORY_SEARCH_ANY, mCORE_MEMORY_SEARCH_DELTA, mCORE_MEMORY_SEARCH_DELTA_POSITIVE, mCORE_MEMORY_SEARCH_DELTA_NEGATIVE, mCORE_MEMORY_SEARCH_DELTA_ANY, }; struct mCoreMemorySearchParams { int memoryFlags; enum mCoreMemorySearchType type; enum mCoreMemorySearchOp op; int align; int width; union { const char* valueStr; int32_t valueInt; }; }; struct mCoreMemorySearchResult { uint32_t address; int segment; uint32_t guessDivisor; uint32_t guessMultiplier; enum mCoreMemorySearchType type; int width; int32_t oldValue; }; DECLARE_VECTOR(mCoreMemorySearchResults, struct mCoreMemorySearchResult); struct mCore; void mCoreMemorySearch(struct mCore* core, const struct mCoreMemorySearchParams* params, struct mCoreMemorySearchResults* out, size_t limit); void mCoreMemorySearchRepeat(struct mCore* core, const struct mCoreMemorySearchParams* params, struct mCoreMemorySearchResults* inout); CXX_GUARD_END #endif