diff --git a/debug_tools.py b/debug_tools.py index c30a62f..e7e9b73 100644 --- a/debug_tools.py +++ b/debug_tools.py @@ -191,7 +191,7 @@ def nonZeroTagIterator(self): yield x,y,val -nx = NoexsClient(('192.168.0.121', 7331)) +nx = NoexsClient(('10.0.128.113', 7331)) nx.attach(find_ACNH(nx)) print(nx.get_status()) @@ -227,6 +227,7 @@ def u32(re_p): return nx.peek32(re_to_nx(re_p)) def u16(re_p): return nx.peek16(re_to_nx(re_p)) def u8(re_p): return nx.peek8(re_to_nx(re_p)) def read(re_p, size): return nx.read(re_to_nx(re_p), size) +def write(re_p, data): return nx.write(re_to_nx(re_p), data) def readRectHU(re_p): @@ -251,6 +252,6 @@ def diff(a,b): for x,y,tag in layers[0].tags.nonZeroTagIterator: print(f'{x},{y} {tag:8x}') -field = FieldSystem.get().defaultField -main = field.itemLayers -nx.resume() +# field = FieldSystem.get().defaultField +# main = field.itemLayers +# nx.resume() diff --git a/ghidra_scripts/ACEnumScraper2.py b/ghidra_scripts/ACEnumScraper2.py index 272126d..4ac43b4 100644 --- a/ghidra_scripts/ACEnumScraper2.py +++ b/ghidra_scripts/ACEnumScraper2.py @@ -137,10 +137,33 @@ def handle_enum_getter(fn): return getReferencesFrom(add_x1.address)[0].toAddress print('FAILED TO FIND MEMCPY') -for ref in getReferencesTo(toAddr('BcsvHeader_isJPEnums')): +def find_bcsvheader_isjpenums(): + fn_name = 'BcsvHeader_isJPEnums' + + addr = toAddr(fn_name) + if addr is not None: + return addr + + print('%s not found, searching all functions for it...' % fn_name) + + fm = currentProgram.getFunctionManager() + funcs = fm.getFunctions(True) + for func in funcs: + addr = func.getEntryPoint() + instr = getInstructionAt(addr) + if instr is not None and instr.mnemonicString == 'cbz': + if getInt(addr.add(4)) == 0x39402c08: + if getInt(addr.add(8)) == 0x7100011f: + if getInt(addr.add(12)) == 0x1a9f07e0: + func.setName(fn_name, ghidra.program.model.symbol.SourceType.DEFAULT) + print('Found it at %r' % addr) + return addr + + raise ValueError('Couldn\'t find %s' % fn_name) + +for ref in getReferencesTo(find_bcsvheader_isjpenums()): track_jpe_cond_call(ref.fromAddress) import json with open('bcsv_enum_results.json', 'w') as f: json.dump(results, f, indent=4, sort_keys=True) - diff --git a/pynoexs.py b/pynoexs.py index 6629c82..7f0e366 100644 --- a/pynoexs.py +++ b/pynoexs.py @@ -97,19 +97,36 @@ def read(self, addr, size): self._recv_result() #ignored return result + def write(self, addr, data): + self.sock.sendall(struct.pack('