free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問答首頁 最新問題 熱門問題 等待回答標(biāo)簽廣場
我要提問

ARM反匯編-網(wǎng)上收集(不定期更新)



ARM反匯編-網(wǎng)上收集



制定一個(gè)長期的計(jì)劃 反匯編

然后 依靠網(wǎng)絡(luò)??收集一些資料 匯總在這里

主要方便我自己??然后方便有需要的人
提問者:CAINE_LEE 地點(diǎn):- 瀏覽次數(shù):3745 提問時(shí)間:12-21 18:13
我有更好的答案
提 交
6條回答
上海炎營電子 12-25 15:20
arm程序的反匯編程序 試讀 (2012-04-02 00:49)
標(biāo)簽:??arm??反匯編程序??分類: S3C2440A




? ?? ?? ?? ???我們以一個(gè)小程序來學(xué)習(xí)如何分析反匯編程序


這是匯編源文件:
MCU:S3C2440(arm920T)
代碼實(shí)現(xiàn)點(diǎn)亮個(gè)led小燈

.text
.global _start
_start:
? ?? ???ldr r0,=0x56000010? ?? ???@GPBCON
? ?? ???mov r1,#0x00000400? ?? ???@
? ?? ???str r1,[r0]? ?? ?? ?? ?? ? @GPB5_out=01
? ?? ???
? ?? ???ldr r0,=0x56000014? ?? ???@GPBDAT
? ?? ???mov r1,#0x0
? ?? ???str r1,[r0]? ?? ?? ?? ?? ? @GPBDAT[5]=0,len_off
main_loop:
? ?? ???b? ?? ???main_loop


反匯編文件:
led_on.bin:? ???file format binary

Disassembly of section .data:

00000000 <.data>:
? ?0:? ?? ???e59f0014? ?? ?? ?ldr? ?? ???r0, [pc, #20]? ?? ???; 0x1c
? ?4:? ?? ???e3a01b01? ?? ?? ?mov? ?? ???r1, #1024? ?? ???; 0x400
? ?8:? ?? ???e5801000? ?? ?? ?str? ?? ???r1, [r0]
? ?c:? ?? ???e59f000c? ?? ?? ?ldr? ?? ???r0, [pc, #12]? ?? ???; 0x20
??10:? ?? ???e3a01000? ?? ?? ?mov? ?? ???r1, #0? ?? ???; 0x0
??14:? ?? ???e5801000? ?? ?? ?str? ?? ???r1, [r0]
??18:? ?? ???eafffffe? ?? ?? ?b? ?? ???0x18
??1c:? ?? ???56000010? ?? ?? ?undefined
??20:? ?? ???56000014? ?? ?? ?undefined

接下來讓我們分析下這小小的反匯編程序吧!


? ?0:? ?? ???e59f0014? ?? ?? ?ldr? ?? ???r0, [pc, #20]? ?? ???; 0x1c
這條指令就是把內(nèi)存單元 pc+20 的值load 到r0 中,而根據(jù)ARM 架構(gòu)指南所講,pc 的值讀取得時(shí)候是當(dāng)前指令的地址 +8 ,所以就是把地址28 (也就是16進(jìn)制的1c)的值load 到r0中,r0 現(xiàn)在變成了0x56000010.
? ?
? ?4:? ?? ???e3a01b01? ?? ?? ?mov? ?? ???r1, #1024? ?? ???; 0x400
這條指令是把1024(ARM匯編At&T語法要在立即數(shù)前加#), 也即是16進(jìn)制的0x400 移到r1中。

? ?8:? ?? ???e5801000? ?? ?? ?str? ?? ???r1, [r0]
這個(gè)就是通過str 指令把r1內(nèi)容存到r0 寄存器所指向的內(nèi)存單元。 也就是把1024 存到0x56000000 中。

? ?c:? ?? ???e59f000c? ?? ?? ?ldr? ?? ???r0, [pc, #12]? ?? ???; 0x20
??10:? ?? ???e3a01000? ?? ?? ?mov? ?? ???r1, #0? ?? ???; 0x0
??14:? ?? ???e5801000? ?? ?? ?str? ?? ???r1, [r0]
這三條指令一樣的道理

??18:? ?? ???eafffffe? ?? ?? ?b? ?? ???0x18
這個(gè)是死循環(huán)
??1c:? ?? ???56000010? ?? ?? ?undefined
??20:? ?? ???56000014? ?? ?? ?undefined
這兩行不是指令,而是數(shù)據(jù)。

雖然這程序很簡單,但對(duì)于菜鳥的我一開始是什么感覺都沒有,在這里要感謝CU的朋友
moniskiller 是他的細(xì)心解說讓我頓悟,哈哈
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?

? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? LAY
ywytwerw 12-22 15:08
ARM的BIN文件反匯編方法 .
分類: uboot移植 2012-07-21 23:22 824人閱讀 評(píng)論(0) 收藏 舉報(bào)
最近在調(diào)試uboot的代碼時(shí),用的新版本的uboot,lowlevel_init函數(shù)里是空的,而且在鏈接文件中也沒有發(fā)現(xiàn)對(duì)lowlevel_init.o的鏈接。在bl lowlevel_init 之前和之中加了兩個(gè)電燈,發(fā)現(xiàn)在bl之后的部分并沒有被執(zhí)行,所以想看看具體程序有沒有運(yùn)行這個(gè)函數(shù)。在網(wǎng)上找反匯編bin文件的時(shí)候發(fā)現(xiàn)有朋友提供的方法,很好用。

使用arm-linux 工具鏈里面的arm-linux-objdump 就能反匯編

cd到bin文件所在的目錄, 在命令行下輸入:

arm-linux-objdump -D -b binary -m arm xxx.bin > xxx.asm

參數(shù):
-D 反編譯所有代碼
-m 主機(jī)類型, arm
-b 文件格式, binary

對(duì)于ELF格式的文件只要一個(gè)-D參數(shù)即可

就可以把xxx.bin反匯編到xxx.asm文件
0896086 12-23 11:20
在X86架構(gòu)下的電腦上生成ARM架構(gòu)的匯編代碼有兩種方式:
1、使用交叉編譯工具鏈:arm-linux-gcc,指定-S選項(xiàng)可以生成匯編中間文件。
2、使用arm-linux-objdump反匯編arm二進(jìn)制文件。


1、arm-linux-gcc:
首先編寫C程序,假設(shè)名字為test.c,保存test.c文件內(nèi)容:



使用方法如下:
在使用arm-linux-gcc編譯C源文件時(shí),使用-S選項(xiàng)可以將C文件(test.c為例)編譯到匯編階段,生成arm匯編代碼,使用方式如下:
arm-linux-gcc??-march=armv7-a -mtune=cortex-a9??test.c -S -o test.asm??
生成arm匯編文件test.asm。
說明:
-march可以指定目標(biāo)ARM的架構(gòu)可選參數(shù)見(man gcc)
-mtune(類似于-mcpu)可以具體到ARM處理器類型。
注意:
Specifying both -march= and -mcpu= is redundant, and may not in fact have done what you expected in previous compiler versions (maybe even depending on the order in which the arguments were given). The -march switch selects a "generic" ARMv7-A CPU, and -mcpu selects specifically a Cortex-A8 CPU with tuning specific for that core.

Either use "-march=armv7-a -mtune=cortex-a8", or just use "-mcpu=cortex-a8".

所以只用一個(gè)-mcpu=cortex-a9也可以



test.asm內(nèi)容:
01.
??1? ?? ?? ?.arch armv4t??
02.??2? ?? ?? ?.fpu softvfp??
03.??3? ?? ?? ?.eabi_attribute 20, 1??
04.??4? ?? ?? ?.eabi_attribute 21, 1??
05.??5? ?? ?? ?.eabi_attribute 23, 3??
06.??6? ?? ?? ?.eabi_attribute 24, 1??
07.??7? ?? ?? ?.eabi_attribute 25, 1??
08.??8? ?? ?? ?.eabi_attribute 26, 2??
09.??9? ?? ?? ?.eabi_attribute 30, 6??
10. 10? ?? ?? ?.eabi_attribute 18, 4??
11. 11? ?? ?? ?.file? ?"test.c"??
12. 12? ?? ?? ?.section? ?? ???.rodata??
13. 13? ?? ?? ?.align??2??
14. 14 .LC0:??
15. 15? ?? ?? ?.ascii??"hello.world!\000"??
16. 16? ?? ?? ?.text??
17. 17? ?? ?? ?.align??2??
18. 18? ?? ?? ?.global main??
19. 19? ?? ?? ?.type? ?main, %function??
20. 20 main:??
21. 21? ?? ?? ?.fnstart??
22. 22 .LFB2:??
23. 23? ?? ?? ?@ Function supports interworking.??
24. 24? ?? ?? ?@ args = 0, pretend = 0, frame = 0??
25. 25? ?? ?? ?@ frame_needed = 1, uses_anonymous_args = 0??
26. 26? ?? ?? ?stmfd? ?sp!, {fp, lr}??
27. 27? ?? ?? ?.save {fp, lr}??
28. 28 .LCFI0:??
29. 29? ?? ?? ?.setfp fp, sp, #4??
30. 30? ?? ?? ?add? ???fp, sp, #4??
31. 31 .LCFI1:??
32. 32? ?? ?? ?ldr? ???r0, .L3??
33. 33? ?? ?? ?bl? ?? ?puts??
34. 34? ?? ?? ?mov? ???r3, #0??
35. 35? ?? ?? ?mov? ???r0, r3??
36. 36? ?? ?? ?sub? ???sp, fp, #4??
37.
 36? ?? ?? ?sub? ???sp, fp, #4??
38. 37? ?? ?? ?ldmfd? ?sp!, {fp, lr}??
39. 38? ?? ?? ?bx? ?? ?lr??
40. 39 .L4:??
41. 40? ?? ?? ?.align??2??
42. 41 .L3:??
43. 42? ?? ?? ?.word? ?.LC0??
44. 43 .LFE2:??
45. 44? ?? ?? ?.fnend??
46. 45? ?? ?? ?.size? ?main, .-main??
47. 46? ?? ?? ?.ident??"GCC: (Sourcery G++ Lite 2009q1-176) 4.3.3"??
48. 47? ?? ?? ?.section? ?? ???.note.GNU-stack,"",%progbits
siuhdwqiuhd 12-24 13:42
開源??的編譯器

1. llvm
http://llvm.org/
繼gcc以后, 在學(xué)術(shù)界和產(chǎn)業(yè)界都有很大影響的編譯器

2. gcc
http://gcc.gnu.org/
最強(qiáng)大的開源編譯器

3. suif
http://suif.stanford.edu/
A free infrastructure designed to support collaborative research in optimizing and parallelizing compilers.

4. CLIhttp://hal.cs.berkeley.edu/cil/
CIL (C
Intermediate
Language) is a high-level representation along with a set of tools that permit easy analysis and source-to-source transformation of C programs.
2011jiangzhou 12-24 23:46
也許有一個(gè)??快速的 途徑? ?通過修改 GCC 來進(jìn)行反匯編??應(yīng)為GCC開源


以前敲過機(jī)器碼的 電工??肯定對(duì) 正匯編 印象特深
就是把 匯編 文件 翻譯成 2進(jìn)制??然后逐行 敲入燒寫器??然后 在燒寫到MCU
Abby0127 12-22 11:47
GCC??下載??地址http://ftp.gnu.org/pub/pub/gnu/gcc/
撰寫答案
提 交
1 / 3
1 / 3