Files
Flawed 367765871b Bunch of miscellaneous updates
I've dropped the ball on making smaller commits so now here's a big one

- Update sig for post-6.40 exes
- Some packet handlers have switches for packet sizes. Added a heuristic
  to capture this information
- Consolidated vtable alignment warnings
- Added script to debug similarity matrix
2023-08-21 14:38:38 -07:00

57 lines
1.4 KiB
Python

import sys
import time
import os
import click
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
def create_r2_byte_pattern(sig):
tokens = sig.split()
r2_tokens = []
for token in tokens:
if token == "?":
r2_tokens.append("..")
else:
r2_tokens.append(token)
return "".join(r2_tokens)
def sync_r2_output(r2):
"""
For some fucking reason r2pipe output gets desynced from the start,
making the result of every command what the previous command should
have returned.
Read stuff from the process pipe until it stops being stupid.
"""
def set_blocking(fileno, blocking):
if hasattr(os, "set_blocking"):
os.set_blocking(fileno, blocking)
time.sleep(1)
set_blocking(r2.process.stdout.fileno(), False)
p = r2.process.stdout.read(1)
set_blocking(r2.process.stdout.fileno(), True)
output = r2.cmd(f"?vi 123").strip()
if output != "123":
raise Exception("R2 state never got synced")
class HexIntParamType(click.ParamType):
name = "integer"
def convert(self, value, param, ctx):
if isinstance(value, int):
return value
try:
if value[:2].lower() == "0x":
return int(value[2:], 16)
return int(value, 16)
except ValueError:
self.fail(f"{value!r} is not a valid hex integer", param, ctx)