Skip to content(if available)orjump to list(if available)

LibLISA – Instruction Discovery and Analysis on x86-64

saagarjha

This is neat but the analysis of their work leaves a bit to be desired. You can't just randomly select instructions and see if you did a good job, because the instruction space is not really uniform on any axis that people care about. For example, on a hypothetical ISA that has most the encoding space that is, like, simple arithmetic ops then you can get "good" coverage really easily. But that's not actually very useful because the instructions people care about when doing this kind of analysis are specific and usually more esoteric, and difficult to analyze with a simple bitstring approximation. Like, this definitely cannot discover the semantics of syscall, or rdrand. The authors claim they would have been able to discover reptar if they extended their work slightly, but I think it is pretty dubious that their methodology is powerful enough to do so.

pabs3

Reminds me of sandsifter, a fuzzer for the x86 ISA:

https://github.com/xoreaxeaxeax/sandsifter

jf

I've long wanted to have a way to see what actually happens inside a CPU when a set of instructions are executed. I'm pretty excited after skimming this paper as it looks like they developed a technique to automatically determine how the x86-64 instructions actually work by observing real world CPU behavior.

dzaima

This is determining the directly observable behavior rather than anything about microarchitectural specifics.

ddingus

And still quite a useful tool, particularly when exploring undocumented instructions.

fragmede

blinkenlights might be up your alley, if you haven't seen it before.

https://justine.lol/blinkenlights/

westurner

From https://news.ycombinator.com/item?id=33563857 :

> Memory Debugger

Valgrind > Memcheck, None: https://en.wikipedia.org/wiki/Valgrind ; TIL Memcheck's `none` provides a traceback where the shell would normally just print "Segmentation fault"

DynamoRio > Dr Memory: https://en.wikipedia.org/wiki/DynamoRIO#Dr._Memory

Intel Pin: https://en.wikipedia.org/wiki/Pin_(computer_program)

https://news.ycombinator.com/item?id=22095435, : SoftICE, EPT, Hypervisor, HyperDbg, PulseDbg, BugChecker, pyvmidbg (libVMI + GDB), libVMI Python, volatilityfoundation/volatility, Google/rekall -> yara, winpmem, Microsoft/linpmem, AVML,

rr, Ghidra Trace Format: https://github.com/NationalSecurityAgency/ghidra/discussions... https://github.com/NationalSecurityAgency/ghidra/discussions... : appliepie, orange_slice, cannoli

GDB can help with register introspection: https://web.stanford.edu/class/archive/cs/cs107/cs107.1202/l... :

> Auto-display and Printing Registers: The `info reg` command [and `info all-registers` (`i r a`)]

emu86 implements X86 instructions in Python, optionally in Jupyter notebooks; still w/o X86S, SIMD, AVX-512, x86-84-v4