導航:首頁 > 操作系統 > linuxarm反匯編

linuxarm反匯編

發布時間:2024-01-01 10:56:20

㈠ 在linux系統中怎麼使C程序變成Intel的匯編程序而不是AT&T的,gcc編譯後默認的是AT&T的

gcc編譯的程序碼是沒有「Intel」、「at&t」之分的⋯⋯就是二進制而已。所謂的「Intel」、「at&t」是指匯編語言的寫作格式。
如果你用yum軟體包管理器,sudo yum install nasm。
如果你用apt-get,sudo apt-get install nasm。
如果不行,就到sourceforge下載nasm的rpm(如果是yum)或deb(apt-get),然後安裝。
如果還不行,下載源碼,然後終端里(在解壓出的目錄下):
./configure
make
sudo make install
最後,ndisasm -b 32 文件名。
順便一說安裝的這個nasm是intel格式的匯編編譯器。相當好。然後ndisasm是它附帶的反匯編器。
不好意思沒法放網址。網路會把這個回答給刪掉。
star特530的是ARM匯編的。

㈡ 請問arm-linux-gcc和arm-linux-ld還有arm-linux-obj之間是什麼關系

arm-linux-ld 是連接器,它把一些目標和歸檔文件結合在一起,重定位數據,並連接符號引用。通常,建立一個新編譯程序的最後一步就是調用ld。

arm-linux-gcc -wall -O2 -c -o $@ $<
-o 只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件
-Wall 指定產生全部的警告信息
-O2 編譯器對程序提供的編譯優化選項,在編譯的時候使用該選項,可以使生成的執行文件的執行效率提高
-c 表示只要求編譯器進行編譯,而不要進行鏈接,生成以源文件的文件名命名但把其後綴由 .c 或 .cc 變成 .o 的目標文件
-S 只激活預處理和編譯,就是指把文件編譯成為匯編代碼
arm-linux-ld 直接指定代碼段,數據段,BSS段的起始地址
-Tbss ADDRESS Set address of .bss section

-Tdata ADDRESS Set address of .data section

-Ttext ADDRESS Set address of .text section
示例:
${CROSS}ld -Ttext=0x33000000 led.o -o led.elf
使用連接腳本設置地址:
arm-linux-ld -Tbeep.lds start.o beep.o -o beep.elf
其中beep.lds 為連接腳本如下:
arm-linux-obj被用來復制一個目標文件的內容到另一個文件中,可用於不同源文件的之間的格式轉換
示例:
arm-linux-obj –o binary –S elf_file bin_file
常用的選項:
input-file , outflie
輸入和輸出文件,如果沒有outfile,則輸出文件名為輸入文件名
2.-l bfdname或—input-target=bfdname
用來指明源文件的格式,bfdname是BFD庫中描述的標准格式名,如果沒指明,則arm-linux-obj自己分析
3.-O bfdname 輸出的格式
4.-F bfdname 同時指明源文件,目的文件的格式
5.-R sectionname 從輸出文件中刪除掉所有名為sectionname的段
6.-S 不從源文件中復制重定位信息和符號信息到目標文件中
7.-g 不從源文件中復制調試符號到目標文件中
arm-linux-objmp
查看目標文件(.o文件)和庫文件(.a文件)信息
arm-linux-objmp -D -m arm beep.elf > beep.dis
-D 顯示文件中所有匯編信息
-m machine

指定反匯編目標文件時使用的架構,當待反匯編文件本身沒有描述架構信息的時候(比如S-records),這個選項很有用。可以用-i選項列出這里能夠指定的架構.
[guowenxue@localhost asm_c_buzzer]$ cat beep.lds
/***********************************************************************
* File: beep.lds
* Version: 1.0.0
* Copyright: 2011 (c) Guo Wenxue <[email protected]>
* Description: Cross tool link text, refer to u-boot.lds
* ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011"
*
**********************************************************************/
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS{
. = 0x33000000;
.text : {

*(.text)
*(.rodata)
}

.data ALIGN(4): {

*(.data)

}
.bss ALIGN(4): {

*(.bss)

}

}

[guowenxue@localhost asm_c_buzzer]$ cat makefile

# ***********************************************************************

# * File: makefile

# * Version: 1.0.0

# * Copyright: 2011 (c) Guo Wenxue <[email protected]>

# * Description: Makefile used to cross compile the ASM and C source code

# * ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011"

# *
# ***********************************************************************
CROSS = /opt/buildroot-2011.02/arm920t/usr/bin/arm-linux-
CFLAGS =
beep.bin: start.S beep.c
arm-linux-gcc $(CFLAGS) -c -o start.o start.S

arm-linux-gcc $(CFLAGS) -c -o beep.o beep.c

arm-linux-ld -Tbeep.lds start.o beep.o -o beep.elf

arm-linux-obj -O binary -S beep.elf beep.bin

rm -f *.elf *.o
install:
cp beep.bin ~/winxp -f --reply=yes
clean:
rm -f *.elf *.o
rm -f beep.bin

㈢ 求6502和ARM的反匯編軟體

Linux下似乎可以用gdb反匯編arm的程序,找一下arm-linux的toolchain
Windows下只能用ADS了,就是ARM官方出的一個開發套件。這個東西一般買開發板的時候都帶的。

㈣ Linux為什麼開源

使用Linux必須手動輸入命令是一個偏見。本人長年累月地使用Linux,但是我並不熟悉Linux的命令。
Linux一般都部署在伺服器上,為了讓伺服器更穩定,在伺服器上安裝Linux時常常不安裝圖形環境。這也是讓人產生「做什麼事情都需要手動輸入命令」的錯覺。

實際上,我對開源的概念也不是十分理解。簡單地說,允許查看、修改源代碼的軟體就屬於開源軟體。而像Win和MacOsX這樣的系統,源代碼都是保密的,他們都是閉源軟體。

按照開源許可協議,所有的Linux發行版都必須公開源代碼。不過因為源代碼很佔用空間,源代碼一般不會直接附在發行版的光碟中,需要您自己下載。

DOS系統是由匯編語言編寫的,其餘的能叫上名字的操作系統,比如Linux、DBS、Win之類的,一般都是由C語言編寫的。

因為Win是閉源軟體,因此您看不到它的源代碼,修改起來也比較難。要想修改Win,首先您要熟悉軟體的反匯編技術,其次您要做好保密工作,不要讓人發現,被發現了是要坐牢的。
順便說一句:WinCE是開源的。

修改Linux的源代碼就比較自由了。
不知到您的編程水平如何,我稍微提醒您一下,自2.6.27開始,Linux內核的代碼就超過1000萬行了,雖然大部分的代碼都是些驅動程序。
在閱讀源代碼前,最好先找本介紹Linux內核原理的書。

㈤ 分析linux內核崩潰信息

分析kernel比較關鍵的就是看三點:
1) 內核會給出一個崩潰原因的猜測,這里是,CPU 0 Unable to handle kernel paging request at virtual address 00000000
2) 看pc指針的值,這里是epc == 00000000
3) 看調用棧Call Trace:[ //可惜後面沒給出來
通常是根據指針加上偏移值跟反匯編代碼對照,找到出問題的指令。
這個panic的原因比較明顯,應該是引用了空指針,試圖執行0x00000000出的代碼。

閱讀全文

與linuxarm反匯編相關的資料

熱點內容
伺服器程序怎麼刪除 瀏覽:655
阿里年薪70萬程序員名單照片 瀏覽:573
android定製輸入法 瀏覽:758
linux下編譯android 瀏覽:311
電影重建文件夾 瀏覽:981
第五人格香香解壓 瀏覽:626
我的世界手機版推薦什麼伺服器 瀏覽:706
安卓怎麼下載空戰 瀏覽:586
程序員賣房入市 瀏覽:117
android視頻播放窗口 瀏覽:288
17元特效的app名字叫什麼 瀏覽:838
小米手機什麼時候配置安卓 瀏覽:262
三種命令方塊 瀏覽:565
hp伺服器怎麼重新做系統 瀏覽:480
電腦與單片機無線 瀏覽:611
雲伺服器錢怎麼提現 瀏覽:878
華為運動app怎麼退出登錄 瀏覽:796
程序員那麼可愛陸漓金句 瀏覽:879
java如何將自己電腦設置成伺服器 瀏覽:859
域名怎麼制定伺服器8080埠 瀏覽:667