Re: Disassemble binary.

2018-05-08 Thread vital.fadeev via Digitalmars-d

Source code: https://github.com/vitalfadeev/dasm


Re: Disassemble binary.

2018-05-08 Thread vital.fadeev via Digitalmars-d

example:

./dasm opcode.o opcode.op_eq_s

Disassembly of section .text._D6opcode7op_eq_sFZi:
 <_D6opcode7op_eq_sFZi>:
   0:   55  push   %rbp
   1:   48 8b ecmov%rsp,%rbp
   4:   48 39 d1cmp%rdx,%rcx
   7:   75 0a   jne13 
<_D6opcode7op_eq_sFZi+0x13>

   9:   48 85 c9test   %rcx,%rcx
   c:   74 0c   je 1a 
<_D6opcode7op_eq_sFZi+0x1a>

   e:   fc  cld
   f:   f3 a6   repz cmpsb %es:(%rdi),%ds:(%rsi)
  11:   74 07   je 1a 
<_D6opcode7op_eq_sFZi+0x1a>

  13:   b8 00 00 00 00  mov$0x0,%eax
  18:   eb 05   jmp1f 
<_D6opcode7op_eq_sFZi+0x1f>

  1a:   b8 01 00 00 00  mov$0x1,%eax
  1f:   90  nop
  20:   5d  pop%rbp
  21:   c3  retq
...



Disassemble binary.

2018-05-08 Thread vital.fadeev via Digitalmars-d

Just share.
Script for disassemble binary.
And script for bash completion. Complete symbol names.


Files:
./dasm
/etc/bash_completion.d/dasm


file <./dasm>

#!/bin/bash
# Author: abu, vital
# Description: puts disassembled objectfile to std-out

if [ $# = 2 ]; then
sstrg="^[[:xdigit:]]{2,}+.*<$2>:$"
objdump -d $1 | awk -F"\n" -v RS="\n\n" '$1 ~ /'$2'/'
elif [ $# = 1 ]; then
objdump -d $1 | awk -F"\n" -v RS="\n\n" '{ print $1 }'
else
echo "You have to add argument(s)"
echo "Usage:   "$0 " arg1 arg2"
echo "Description: print disassembled label to std-out"
echo " arg1: name of object file"
echo " arg2: name of function to be disassembled"
echo " "$0 " arg1... print labels and their rel. 
addresses"

fi


file 

# bash completion for dasm
_dasm()
{
local cur=${COMP_WORDS[COMP_CWORD]}

if [[ $COMP_CWORD -eq 1 ]] ; then
# files
COMPREPLY=( $( command ls *.o -F 2>/dev/null | grep "^$cur" ) )

elif [[ $COMP_CWORD -eq 2 ]] ; then
# functions
OBJFILE=${COMP_WORDS[COMP_CWORD-1]}

	COMPREPLY=( $( command nm --demangle=dlang $OBJFILE | grep " W " 
| cut -d " " -f 3 | tr "()" "  " | grep "$cur" ) )


else
COMPREPLY=($(compgen -W "" -- "$cur"));
fi


}

complete -F _dasm dasm