This commit is contained in:
huoji
2025-04-25 16:08:22 +08:00
parent db31cd90b5
commit e160fd0d57
8 changed files with 937 additions and 349 deletions

View File

@@ -85,6 +85,9 @@ struct InternetHandleInfo {
size_t currentPosition;
};
// 添加文件句柄信息前向声明
struct FileHandleInfo;
class Sandbox {
friend class cFixImprot; // 声明cFixImprot为友元类
public:
@@ -252,6 +255,13 @@ class Sandbox {
// 注册COM相关API
void RegisterComApis();
// 文件句柄管理相关方法
auto GenerateFileHandle() -> uint64_t;
auto GetFileHandleInfo(uint64_t handle) -> FileHandleInfo*;
// 文件句柄表
static std::map<uint64_t, FileHandleInfo*> m_fileHandles;
private:
std::shared_ptr<BasicPeInfo> m_peInfo;
std::pair<uint64_t, std::shared_ptr<moudle_import>> m_lastImpRead;
@@ -461,4 +471,14 @@ auto Api_TlsFree(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_FlsAlloc(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_FlsGetValue(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api__initterm_e(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_getenv(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_getenv(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_GetStringTypeW(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_CreateDirectoryW(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_LCMapStringW(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_LCMapStringEx(void* sandbox, uc_engine* uc, uint64_t address) -> void;
// 文件API函数声明
auto Api_ReadFileA(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_ReadFileW(void* sandbox, uc_engine* uc, uint64_t address) -> void;
auto Api_ReadFile(void* sandbox, uc_engine* uc, uint64_t address, bool isWideChar) -> void;
auto Api_CloseFile(void* sandbox, uc_engine* uc, uint64_t address) -> void;