Gcc 比努蒂尔斯:hex2asm
我从android的logcat中获得堆栈转储,它在pc上显示如下代码: I/DEBUG ( 1006): code around pc: I/DEBUG ( 1006): 825b11b8 e1cd66d8 e59de070 e046a007 e3caa00f I/DEBUG ( 1006): 825b11c8 e1a0c007 e1a06000 e0808005 e0809085 I/DEBUG ( 1006): 825b11d8 f426892d f428c92d f469092d e25cc010 I/DEBUG ( 1006): 825b11e8 f426992d f428d92d f308014c f469192d I/DEBUG ( 1006): 825b11f8 f30aa14e f466492d f30c2160 f468892d I/DEBUG(1006):关于pc的代码: I/DEBUG(1006):825B14B8 e1cd66d8 e59de070 e046a007 e3caa00f I/调试(1006):825b11c8 e1a0c007 e1a06000 e0808005 e0809085 I/DEBUG(1006):825b11d8 f426892d f428c92d f469092d e25cc010 I/DEBUG(1006):825b11e8 f426992d f428d92d f308014c f469192d I/DEBUG(1006):825b11f8 f30aa14e F46642D f30c2160 f468892dGcc 比努蒂尔斯:hex2asm,gcc,assembly,android-ndk,binutils,Gcc,Assembly,Android Ndk,Binutils,我从android的logcat中获得堆栈转储,它在pc上显示如下代码: I/DEBUG ( 1006): code around pc: I/DEBUG ( 1006): 825b11b8 e1cd66d8 e59de070 e046a007 e3caa00f I/DEBUG ( 1006): 825b11c8 e1a0c007 e1a06000 e0808005 e0809085 I/DEBUG ( 1006): 825b11d8 f426892d f428c92d f469
问题是:使用gcc/binutils,如何将这些东西转换为asm?它看起来像thumb2(ARM 16位)。对于xscale,我使用了这两个命令,可能会以某种方式将xscale更改为arm或thumb,并尝试使用arm linux gnueabi objcopy-B xscale-I binary somebinary.bin-O elf32 littleram outputfile.elf arm linux gnueabi objdump-D outputfile.elf>outputfile.list您将得到一些数据作为指令反汇编,但这是一个固定长度的指令集(好吧,sorta).或者,如果这就是你想要分解的所有东西,那就用手来做吧。这是一个arm7 tegra,我想它是在arm模式下编译的。我想知道是否有一个命令可以为给定的32十六进制值提供操作码字符串。我正在编写一个脚本,可以自动进行logcat处理,我希望看到asm块well@dwelch什么意思?这样的事怎么能用手做呢?或者你想破坏整个系统。所以,然后搜索那个位置,这不是我要找的。如果你所说的是帖子中的代码,看起来是8个arm指令,12个thumb 2可能,10个thumb,如果有更多的代码,那么不,不是手动的。一个反汇编程序并不难写,需要一个下午的时间。不过,问题中的代码看起来好坏参半。以0xE开头的单词通常是arm,thumb通常是带有0x6或0x7的半字,但0x8s和0x1s可能是thumb,0xFs可能是thumb 2或许多thumb分支。