Created
August 10, 2019 03:10
-
-
Save lwerdna/c85af007b61c9849eb819b7d183e6886 to your computer and use it in GitHub Desktop.
binja disassemble from command line
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# | |
# command-line binary ninja disassembler | |
import sys | |
import binaryninja | |
GREEN = '\x1B[32m' | |
NORMAL = '\x1B[0m' | |
if not sys.argv[2:]: | |
print('usage: %s <arch> <bytes>' % sys.argv[0]) | |
print('examples:') | |
print(' eg: %s aarch64 ff 43 00 d1' % sys.argv[0]) | |
print(' eg: %s armv7 14 d0 4d e2' % sys.argv[0]) | |
print(' eg: %s armv7eb 14 d0 4d e2' % sys.argv[0]) | |
print(' eg: %s mips32 27 bd ff f0' % sys.argv[0]) | |
print(' eg: %s mipsel32 f0 ff bd 27' % sys.argv[0]) | |
print(' eg: %s ppc 93 e1 ff fc' % sys.argv[0]) | |
print(' eg: %s ppc_le fc ff e1 93' % sys.argv[0]) | |
print(' eg: %s thumb2 85 b0' % sys.argv[0]) | |
print(' eg: %s thumb2eb b0 85' % sys.argv[0]) | |
print(' eg: %s x86 55' % sys.argv[0]) | |
print(' eg: %s x86_64 55' % sys.argv[0]) | |
print('') | |
print('architectures:') | |
print('\t' + '\n\t'.join(map(lambda x: x.name, list(binaryninja.Architecture)))) | |
sys.exit(-1) | |
# divide arguments | |
archName = sys.argv[1] | |
bytesList = sys.argv[2:] | |
# parse byte arguments | |
data = b''.join(list(map(lambda x: int(x,16).to_bytes(1,'big'), bytesList))) | |
# disassemble | |
arch = binaryninja.Architecture[archName] | |
toksAndLen = arch.get_instruction_text(data, 0) | |
if not toksAndLen or toksAndLen[1]==0: | |
print('disassembly failed') | |
sys.exit(-1) | |
# report | |
toks = toksAndLen[0] | |
strs = map(lambda x: x.text, toks) | |
print(GREEN, ''.join(strs), NORMAL) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment