//|_ _ _. _ ._ |_ _. _ | //| | (/_ (_| \/ (/_ | | | | (_| (_ |< #pragma once #include "process64.h" #include "util.h" #include "syscall.h" extern I32 perf_tickrate; static void syscall_dump_to_file() { static VECTOR< SYSCALL_ENTRY > syscalls = syscall_dump(); static VECTOR< SYSCALL_ENTRY > syscalls64 = syscall_dump64(); static VECTOR< MODULE_EXPORT64 > nt64_exports = module_get_exports64( nt_get_address64() ); char* syscall_str = (char*)malloc( 100000 ); memset( syscall_str, 0, 100000 ); char line_buf[256]{}; for( auto& it : syscalls ) { sprintf_s<256>( line_buf, "%d %s -> %llx\n", it.idx, it.name.data, it.base ); strcat( syscall_str, line_buf ); } FILE* dump = fopen( "./syscalls_32.dump", "w" ); fwrite( syscall_str, strlen( syscall_str ), 1, dump ); fclose( dump ); memset( syscall_str, 0, 100000 ); for( auto& it : syscalls64 ) { sprintf_s<256>( line_buf, "%d %s -> %llx\n", it.idx, it.name.data, it.base ); strcat( syscall_str, line_buf ); } dump = fopen( "./syscalls_64.dump", "w" ); fwrite( syscall_str, strlen( syscall_str ), 1, dump ); fclose( dump ); memset( syscall_str, 0, 100000 ); for( auto& it : nt64_exports ) { sprintf_s<256>( line_buf, "%s -> %llx\n", it.name.data, it.base ); strcat( syscall_str, line_buf ); } dump = fopen( "./nt64.dump", "w" ); fwrite( syscall_str, strlen( syscall_str ), 1, dump ); fclose( dump ); free( syscall_str ); } void show_paging( U8 num ); typedef void(*CON_PAGE_FN)(); struct MENU_PAGE { const char* name; CON_PAGE_FN page_fn; }; const I8 MENU_PAGE_MIN = 0; const I8 MENU_PAGE_MAX = 2; extern I8 menu_page; extern MENU_PAGE menu_pages[MENU_PAGE_MAX - MENU_PAGE_MIN + 1]; extern void menu_show_ui( PROCESS64* p );