Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions debug_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand Down Expand Up @@ -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):
Expand All @@ -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()
27 changes: 25 additions & 2 deletions ghidra_scripts/ACEnumScraper2.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

17 changes: 17 additions & 0 deletions pynoexs.py
Original file line number Diff line number Diff line change
Expand Up @@ -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('<BQI', int(Command.WRITE), addr, len(data)))
self._assert_result_ok(throwaway=True)

self.sock.sendall(data)
self._assert_result_ok()

def resume(self):
self.sock.sendall(struct.pack('<B', int(Command.CONTINUE)))
self._assert_result_ok()

def pause(self):
self.sock.sendall(struct.pack('<B', int(Command.PAUSE)))
self._assert_result_ok()

def attach(self, pid):
self.sock.sendall(struct.pack('<BQ', int(Command.ATTACH), pid))
self._assert_result_ok()

def detach(self):
self.sock.sendall(struct.pack('<B', int(Command.DETACH)))
self._assert_result_ok()

def set_breakpoint(self, id, addr, flags):
self.sock.sendall(struct.pack('<BIQQ', int(Command.SET_BREAKPOINT), id, addr, flags))
self._assert_result_ok()

def set_watchpoint(self, id, addr, flags):
raise NotImplementedError

def get_pids(self):
self.sock.sendall(struct.pack('<B', int(Command.GET_PIDS)))
count = struct.unpack('<I', self._recvall(4))[0]
Expand Down