2017-06-25 33 views
-1

從linux中的可執行文件中刪除信息時出現問題。該信息如下:如何從objdump命令輸出中快速消除中間列?

08048060 <__bss_start-0x100a>: 
8048060: 31 db     xor %ebx,%ebx 
8048062: 53      push %ebx 
8048063: bb 75 a2 45 7e   mov $0x7e45a275,%ebx 
8048068: ff d3     call *%ebx 

有什麼辦法令切割更快的數據「31. DB 53中的BB 75 A2 7E 45 FF D3」不復制單行然後在每一行remove命令?有時代碼太長時,需要多次剪切該列中的所有數據。

+0

列選擇模式。你的編輯器是否支持它? (爲什麼你要拷貝指令字節?) –

+0

我的工作只需要中間列,所以我只想在沒有最後一列的任何指令或第一列中的地址的情況下將其剪切掉。 – Anvh

+1

如果是shellcode,可能這個'objdump -d ./progname | grep'[0-9a-f]:'| grep -v'file'| cut -f2 -d:| cut -f1-6 -d' '| tr -s''| tr'\ t'''| sed's/$ // g'| sed's// \\ x/g'| paste -d''-s | sed's/^ /「/'| sed's/$ /」/ g'' –

回答

1

一個非常非常簡單的方法是使用相關的工具objcopy

gcc -c shellcode.s 
objcopy -O binary shellcode.o shellcode.bin 

objcopy把可以用來將目標文件複製任意部分。

相關問題