Daniel Seiller
7afdfb5869
- Add notes folder with MDBook documentation (the NOTES.md file was getting kind of large) - Add rz_analyze.py, does the same a r2_analyze.py just with Rizin instead of radare2 so the project can be loaded in Cutter (*and* it's faster) - Add Scrap.rzdb, Rizin database for the Scrap.exe executable - Add Scrapper_rs, Rust version of .packed extractor and repacker - replace helplib.txt with helplib.md - add Py_Docs folder which contains generated documentation for the binary python modules built into Scrap.exe
441 lines
No EOL
12 KiB
YAML
441 lines
No EOL
12 KiB
YAML
notes: |
|
|
0x7faa4c: temp storage?
|
|
0x4039b0: fcn.handle_cli_opts?
|
|
0x668007: ?
|
|
|
|
comments:
|
|
0x6113f9: Check if Window exists
|
|
|
|
flags:
|
|
0x7fbfa0: P_HT_SaveVars
|
|
0x7fbe50: P_HT_Eng_Vars
|
|
0x8c8d60: P_Addr_master
|
|
0x8c8d50: P_Addr_client
|
|
0x7fa748: P_Socket
|
|
0x8045dc: P_Socket_Server
|
|
0x7FE944: P_World
|
|
0x792618: P_Eng3d_ver
|
|
0x853a24: P_gWorld
|
|
0x7FBE4C: P_Vars
|
|
0x79C698: Py_Mods
|
|
0x852914: P_D3D8_Dev
|
|
0x850258: P_D3D8_ZBuffer
|
|
0x850408: P_D3D8_BackBuffer
|
|
0x7FCC00: N_Paks_opened
|
|
0x7fcbec: Hash_Index_Size
|
|
0x7fcbf0: P_Hash_Index
|
|
0x7fcc08: Lst_File
|
|
0x7fcc04: Pak_Locked
|
|
0x7fc1b0: Pak_Index
|
|
0x84cb64: P_ConHandler
|
|
0x801e10: num_arrows
|
|
0x7fac84: P_Callbacks
|
|
0x80b2cc: P_ActClassList
|
|
0x807a20: P_Scorer
|
|
0x80a398: P_SoundSys
|
|
0x84cb58: H_RichEd
|
|
0x84cb4c: P_HWND_Console
|
|
0x80cb40: Console_Win_Buffer
|
|
0x84d400: Lib_preloaded
|
|
0x7fac1c: Activate_Viewer
|
|
0x8b18f0: P_Models
|
|
0x8b18f4: P_Scenes
|
|
0x8b18f8: P_ActiveModels
|
|
0x803bc0: net_is_server
|
|
0x8045e4: net_is_master
|
|
0x8038a8: net_is_client
|
|
0x7fadd8: is_python
|
|
0x7fc084: pak_lock
|
|
0x7fbe7c: current_language
|
|
0x7d2094: refcnt_Py_None
|
|
0x7fa830: P_Window
|
|
0x7fadd0: P_PyExecute
|
|
0x84d3ec: Py_Initialized
|
|
0x8c8f10: Py_Debug
|
|
0x84d3e8: Py_Verbose
|
|
0x84db38: Py_Optimize
|
|
0x84dd60: Py_interpr
|
|
0x7fae38: Debug_Level
|
|
0x7fae40: Console_Out_Buffer_132_23
|
|
0x7fbe20: Console_Curr_Line
|
|
0x84db30: Py_Dummy
|
|
0x8ca2c4: cmdline
|
|
0x8c6350: module_filename
|
|
0x8c6140: P_module_filename
|
|
0x853954: P_D3DApp
|
|
0x853091: N_Uniones
|
|
0x7faa4c: server_state
|
|
0x8039a8: client_data
|
|
0x8038a0: client_ship
|
|
|
|
# 0x7fbe24:
|
|
# 0x7fa778:
|
|
# 0x8c8d78:
|
|
|
|
VMTs:
|
|
0x78d4d8: Py_entity
|
|
0x78cc6c: World
|
|
0x78b680: FilePak_1
|
|
0x78b6a4: FilePak_2
|
|
0x78b638: AbstractFile
|
|
0x78b4d8: App
|
|
0x78b480: Window
|
|
0x78b5c0: File
|
|
0x78b65c: FileMem
|
|
0x78b6d0: IDevice_1
|
|
0x78b6f4: IDevice_2
|
|
0x78b6fc: IDevice_Kb
|
|
0x78b720: IDevice_Mouse
|
|
0x78b74c: IDevice_Joy
|
|
0x7933ac: 3d_Gfx
|
|
0x7933a0: NodeFX
|
|
|
|
classes:
|
|
World:
|
|
|
|
types:
|
|
- "struct PyMethodDef { char* ml_name; void* ml_meth; int ml_flags; char* ml_doc;};"
|
|
- "struct GameVar { struct GameVar* next; const char* name; const char* desc; uint64_t d_type; void* value; void* def_value; };"
|
|
- "struct HT_Entry { void* data; const char* key; struct HT_Entry* next;};"
|
|
- "struct PakEntry { unsigned char* filename; bool locked; void* data; uint32_t seek;};"
|
|
- "struct HashIndexEntry { uint32_t offset; uint32_t size; uint32_t status; const char* name; struct HashIndexEntry* next; };"
|
|
- "struct HashIndex { uint32_t size; struct HashIndexEntry** data; };"
|
|
- "struct HashTableEntry { void* data; const char* key; struct HashTableEntry* next; };"
|
|
- "struct HashTable { uint32_t size; struct HashTableEntry** data; };"
|
|
- "struct va_list { unsigned int gp_offset; unsigned int fp_offset; void *overflow_arg_area; void *reg_save_area; };"
|
|
functions:
|
|
0x5dadc0:
|
|
name: read_MAT_block
|
|
0x5daf10:
|
|
name: read_MAP_block
|
|
0x60d710:
|
|
name: read_INI_block
|
|
0x6155b0:
|
|
name: read_DUM_block
|
|
0x628760:
|
|
name: read_EMI_block
|
|
0x62c070:
|
|
name: read_AMC_block
|
|
0x62c580:
|
|
name: read_SUEL_block
|
|
0x631570:
|
|
name: read_CMSH_block
|
|
0x631940:
|
|
name: read_QUAD_block
|
|
0x64d380:
|
|
name: read_LUZ_block
|
|
0x650f80:
|
|
name: read_SCN_block
|
|
0x652480:
|
|
name: read_LFVF_block
|
|
0x658770:
|
|
name: read_CAM_block
|
|
0x6665a0:
|
|
name: read_CM3_block
|
|
0x666900:
|
|
name: read_SM3_block
|
|
0x6715e0:
|
|
name: read_PORT_block
|
|
0x675c90:
|
|
name: read_MD3D_block
|
|
0x6776d0:
|
|
name: read_NAM_block
|
|
0x6787a0:
|
|
name: read_ANI_block
|
|
0x6869b0:
|
|
name: read_SPR3_block
|
|
0x6875d0:
|
|
name: read_EVA_block
|
|
0x6283a0:
|
|
name: load_emi
|
|
0x4fa9f0:
|
|
name: send_pkt
|
|
0x5ca9e0:
|
|
signature: void* PyFrame_New(void* thread_state, void* code_object,void* globals, void* locals)
|
|
name: PyFrame_New
|
|
0x5bcae0:
|
|
signature: void PyErr_SetString(void* obj, const char* err_msg);
|
|
name: PyErr_SetString
|
|
0x5cb040:
|
|
signature: void* eval_code2(void* dict, const char* key, void* item);
|
|
name: eval_code2
|
|
0x5e3c50:
|
|
convention: cdecl-thiscall-ms
|
|
name: read_int
|
|
0x5e3b50:
|
|
convention: cdecl-thiscall-ms
|
|
name: read_block_header
|
|
0x5c66d0:
|
|
signature: void initerrors(void* dict);
|
|
name: initerrors
|
|
0x5bb370:
|
|
signature: int PyDict_SetItemString(void* dict, const char* key, void* item);
|
|
name: PyDict_SetItemString
|
|
0x5b9960:
|
|
signature: void* PyObject_NEW(void* type, void* typeobj);
|
|
name: PyObject_NEW
|
|
0x4145e0:
|
|
convention: cdecl-thiscall-ms
|
|
signature: bool get_config_var(char* name);
|
|
name: get_config_var
|
|
0x413470:
|
|
signature: void init_logging();
|
|
name: init_logging
|
|
0x5a8040:
|
|
signature: void Py_Initialize();
|
|
name: Py_Initialize
|
|
0x5bb4e0:
|
|
name: PyModule_GetDict
|
|
signature: void* PyModule_GetDict(void*);
|
|
0x5c6610:
|
|
name: _PyBuiltin_Init_1
|
|
signature: void* _PyBuiltin_Init_1();
|
|
0x5b5db0:
|
|
name: PyString_FromString
|
|
signature: void* PyString_FromString(const char*);
|
|
0x5ba3a0:
|
|
name: PyDict_New
|
|
signature: void* PyDict_New();
|
|
0x5c7bd0:
|
|
name: PyThreadState_Swap
|
|
signature: void* PyThreadState_Swap(void* new);
|
|
0x5c7870:
|
|
name: PyInterpreterState_New
|
|
signature: void* PyInterpreterState_New();
|
|
0x5c79b0:
|
|
name: PyThreadState_New
|
|
signature: void* PyThreadState_New(void* interp);
|
|
0x6ad1e9:
|
|
name: getenv
|
|
signature: char* getenv(char* var);
|
|
0x401180:
|
|
name: create_window
|
|
0x401240:
|
|
name: create_main_window
|
|
0x4016f0:
|
|
name: reg_get_val
|
|
signature: int reg_get_val(const char* value);
|
|
0x401770:
|
|
name: init
|
|
0x402190:
|
|
name: handle_console_input
|
|
signature: int handle_console_input(const char* input);
|
|
0x402510:
|
|
name: deinit_world
|
|
0x4026d0:
|
|
name: init_py
|
|
0x403370:
|
|
name: init_engine
|
|
0x4037e0:
|
|
name: init_debug
|
|
0x404280:
|
|
name: cPyFunction_set_func
|
|
0x404420:
|
|
name: clear_functions
|
|
0x404460:
|
|
name: register_c_callback
|
|
signature: int register_c_callback(const char* name,void* func);
|
|
0x404a50:
|
|
name: find_entity
|
|
0x404bb0:
|
|
name: ht_hash_ent
|
|
signature: int ht_hash_ent(const char* str);
|
|
0x405850:
|
|
name: check_is_python
|
|
0x405b40:
|
|
name: init_py_sub
|
|
0x405ca0:
|
|
name: close_py_subsys
|
|
0x4134c0:
|
|
signature: int write_log(unsigned int color, const char* msg);
|
|
name: write_log
|
|
0x4137e0:
|
|
signature: void write_html_log(const char* fmt,...);
|
|
name: write_html_log
|
|
0x413c10:
|
|
name: sprintf
|
|
0x413ee0:
|
|
name: dbg_log
|
|
signature: int dbg_log(const char* fmt,...);
|
|
0x414070:
|
|
name: throw_assertion_2
|
|
signature: void throw_assertion_2(const char* check,const char* file,const char* date, unsigned int line);
|
|
0x414280:
|
|
name: prepare_html_log
|
|
signature: int prepare_html_log(const char* filename);
|
|
0x414570:
|
|
name: setup_game_vars
|
|
0x414680:
|
|
name: load_config
|
|
0x414810:
|
|
name: save_config
|
|
0x417470:
|
|
name: load_game
|
|
0x417df0:
|
|
name: snprintf_1
|
|
0x417d80:
|
|
name: snprintf_2
|
|
0x418220:
|
|
name: get_version_info
|
|
0x419950:
|
|
name: fopen_2
|
|
signature: int fopen_2(const char* filename);
|
|
0x41ab50:
|
|
name: open_pak
|
|
signature: int open_pak(const char* filename, int unk_1,void* unk_ptr);
|
|
0x41c5a0:
|
|
name: has_lst_file
|
|
signature: int has_lst_file(void* unk_ptr);
|
|
0x474f80:
|
|
name: ent_list_get_set
|
|
signature: bool ent_list_get_set(const char* name);
|
|
0x479870:
|
|
name: make_world
|
|
0x479b20:
|
|
name: close_world
|
|
0x479b40:
|
|
name: init_world
|
|
0x47bf90:
|
|
convention: cdecl-thiscall-ms
|
|
name: create_ent_list
|
|
signature: bool create_ent_list(const char* name);
|
|
0x47c1e0:
|
|
name: ht_hash_ent_list
|
|
signature: int ht_hash_ent_list(const char* str);
|
|
0x4f42a0:
|
|
name: close_server_socket
|
|
0x4f48e0:
|
|
name: close_client
|
|
0x4f4a10:
|
|
name: is_client
|
|
0x4f4d10:
|
|
name: close_server
|
|
0x4f4fb0:
|
|
name: is_server
|
|
0x4fac50:
|
|
name: is_master
|
|
0x50b6a0:
|
|
name: get_scorer
|
|
0x50b9b0:
|
|
name: init_scorer
|
|
0x50bcb0:
|
|
name: close_scorer
|
|
0x50ea20:
|
|
name: scorer_parse_type
|
|
0x526520:
|
|
name: shutdown_sound_sys
|
|
0x5268d0:
|
|
name: try_init_sound_sys
|
|
0x526910:
|
|
name: close_sound_sys
|
|
0x528910:
|
|
name: init_sound_sys
|
|
0x582e10:
|
|
name: init_action_class_list
|
|
0x582e70:
|
|
name: close_action_class
|
|
0x5a7320:
|
|
name: close_window
|
|
0x5a73a0:
|
|
name: show_console
|
|
0x5a7440:
|
|
name: create_console_window
|
|
0x5a7f20:
|
|
name: get_console_wnd
|
|
0x5a8390:
|
|
name: PyRun_SimpleString
|
|
signature: int PyRun_SimpleString(const char* command);
|
|
0x5a8e90:
|
|
name: Py_FatalError
|
|
signature: void Py_FatalError(const char* msg);
|
|
0x5a8fb0:
|
|
name: Py_InitModule
|
|
signature: void* Py_InitModule(const char* name,void* methods);
|
|
0x5a90f0:
|
|
name: Py_BuildValue
|
|
signature: void* Py_BuildValue(const char* format, ...);
|
|
0x5a9890:
|
|
name: PyImport_GetModuleDict
|
|
signature: void* PyImport_GetModuleDict();
|
|
0x5aa140:
|
|
name: preload_lib
|
|
0x5b9e70:
|
|
name: PyObject_GetAttrString
|
|
signature: void* PyObject_GetAttrString(void* obj, const char* attr);
|
|
0x5bb9d0:
|
|
name: PyArg_ParseTuple
|
|
signature: int PyArg_ParseTuple(void* PyObj, char* format, ...);
|
|
0x5bc140:
|
|
name: convertsimple1
|
|
signature: static char* convertsimple1(void* arg, char** p_format, void* va_list);
|
|
0x5bc0f0:
|
|
name: convertsimple
|
|
signature: static char* convertsimple(void* arg, char** p_format, char* msgbuf);
|
|
0x5bbf60:
|
|
name: converttuple
|
|
signature: static char* converttuple(void* arg, char** p_format, void* va_list, int* levels, char* msgbuf, int toplevel);
|
|
0x5bbee0:
|
|
name: convertitem
|
|
signature: static char* convertitem(void* arg, char** p_format, void* va_list, int* levels, char* msgbuf);
|
|
0x5c7bb0:
|
|
name: PyThreadState_Get
|
|
signature: void* PyThreadState_Get();
|
|
0x5dd510:
|
|
name: init_engine_3d
|
|
0x5dd700:
|
|
name: close_3d_engine
|
|
0x5dff20:
|
|
name: set_exception_handler
|
|
0x5e3250:
|
|
name: read_stream
|
|
0x5e3500:
|
|
name: fopen
|
|
0x5e3800:
|
|
name: fopen_from_pak
|
|
signature: int fopen_from_pak(const char* filename,const char* mode);
|
|
0x5e3bb0:
|
|
name: read_stream_wrapper
|
|
0x5f7000:
|
|
name: read_ini
|
|
0x5f75e0:
|
|
name: init_d3d
|
|
0x5f9520:
|
|
name: handle_render_console_input
|
|
0x5fbc50:
|
|
name: throw_assertion_1
|
|
signature: void throw_assertion_1(const char* check,const char* file, unsigned int line);
|
|
0x5fc0a0:
|
|
name: engine_debug_log
|
|
0x5fc930:
|
|
name: printf
|
|
0x602a70:
|
|
name: render_frame
|
|
0x6114e0:
|
|
name: setup_window
|
|
0x636580:
|
|
name: list_models
|
|
0x63a2f0:
|
|
name: gdi_draw_line
|
|
0x6597d0:
|
|
name: read_ini_entry
|
|
signature: bool read_ini_entry(void* dest,const char* key, const char* section);
|
|
0x666c60:
|
|
name: read_m3d
|
|
0x6b1c70:
|
|
name: strcmp
|
|
signature: bool strcmp(const char* s1,const char* s2);
|
|
0x6b738c:
|
|
name: handle_exception
|
|
|
|
script: |
|
|
e asm.cmt.right = true
|
|
e scr.utf8 = true
|
|
e asm.describe = false
|
|
e graph.cmtright = true
|
|
e cfg.sandbox = false
|
|
e cfg.newtab = true
|
|
e cfg.fortunes.type = tips,fun,creepy,nsfw
|
|
e dbg.status = true
|
|
e pdb.autoload = true
|
|
e emu.str = true
|
|
e asm.flags.offset = true |