徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
自由
比浏览器更快的访问!
 

反汇编器

指数 反汇编器

反汇编器(disassembler)是一种将机器语言转换为汇编语言的计算机程序——这与汇编器的目的相反。反汇编器与反编译器不同,反编译器的目标是高级语言而非汇编语言。反汇编器的反汇编输出通常格式化为适合人类阅读,而非用作汇编器的输入源,因此它主要是一个逆向工程工具。 汇编语言源代码通常允许使用和程序员注释,而这些通常会在汇编器汇编的机器语言中被移除。因此,以机器代码为基础完成的反汇编结果将没有这些常量和注释,阅读输出结果将比阅读源代码更有难度。一些反汇编器提供了内置的代码注释功能,其生成的输出增补了有关被调用API函数或被调用函数参数的注释。一些反汇编器会利用对象文件(例如ELF)中存在的信息。例如,IDA允许人类用户在交互式会话中为代码的值或区域标记助记符号。 反汇编不是一门精准科学:在有可变宽度指令的复杂指令集(CISC)平台上,使用级编程或存在程序自修改代码时,单个程序可能有两个或多个合理的反汇编结果。程序在运行期间决定实际执行哪个指令被歸約到停机问题,这是已知无法解决的问题。.

19 关系: 停机问题反編譯器可執行與可鏈接格式复杂指令集仿真器程序自修改计算机程序调试工具逆向工程GNU BinutilsGNU侦错器HypervisorIDA Pro歸約汇编语言注释 (计算机语言)源代码机器语言数据流分析

停机问题

停机问题()是逻辑数学中可计算性理论的一个问题。通俗地说,停机问题就是判断任意一个程序是否能在有限的时间之内结束运行的问题。该问题等价于如下的判定问题:是否存在一个程序P,对于任意输入的程序w,能够判断w会在有限时间内结束或者死循环。 艾伦·图灵在1936年用對角論證法证明了,不存在解决停机问题的通用算法。这个证明的关键在于对计算机和程序的数学定义,这被称为图灵机。停机问题在图灵机上是不可判定问题。这是最早提出的决定性问题之一。 用数学语言描述,则其本质问题为: 给定一个图灵机T,和一个任意语言集合S,是否T会最终停机于每一个 s \in S。其意义相同于可确定语言。显然任意有限 S 是可判定性的,可数的(countable)S 也是可停机的。 停机问题包含了自我指涉,本质是一阶逻辑的不自洽性和不完备性,类似的命题有理发师悖论、全能悖论等。.

新!!: 反汇编器和停机问题 · 查看更多 »

反編譯器

反編譯器的功能與編譯器相反。顧名思義,就是將已編譯好的程式語言還原到未編譯的狀態,也就是找出程序语言的源代码。一種反编译器通常只能反編譯1~2種程式語言,反编译器的功能只侷限在某些語言上,如Java,像C/C++便沒有適合的反编译器可使用。 Category:编译器软件.

新!!: 反汇编器和反編譯器 · 查看更多 »

可執行與可鏈接格式

可執行和可鏈接格式 (Executable and Linkable Format,縮寫為ELF),常被稱為ELF格式,在電腦科學中,是一种用於執行檔、目的檔、共享库和核心转储的标准文件格式。 1999年,被86open项目选为x86架构上的類Unix操作系统的二进制文件格式标准,用來取代COFF。因其可扩展性与灵活性,也可应用在其它处理器、计算机系统架构的操作系统上。.

新!!: 反汇编器和可執行與可鏈接格式 · 查看更多 »

复杂指令集

複雜指令集(英文:Complex Instruction Set Computing;縮寫:CISC)是一種微處理器指令集架構,每個指令可執行若干低階操作,諸如從記憶體讀取、儲存、和計算操作,全部集於單一指令之中。與之相對的是精簡指令集。 複雜指令集的特点是指令数目多而复杂,每条指令字长并不相等,電腦必須加以判讀,并为此付出了性能的代价。 在精簡指令集處理器發跡以前,許多電腦架構嘗試跨越「語義鴻溝」——設計出藉由提供「高階」指令支援高階程式語言的指令集,諸如程序調用和返回,迴圈指令諸如「若非零則減量和分支」和複雜尋址模式以允許資料結構和陣列存取以結合至單一指令。与复杂指令集相比,精简指令集实现更容易,指令并行执行程度更好,编译器的效率更高。 屬於複雜指令集的處理器有CDC 6600、System/360、VAX、PDP-11、Motorola 68000家族、x86等。.

新!!: 反汇编器和复杂指令集 · 查看更多 »

仿真器

模--擬器(Emulator),也有译作仿--真器,是指主要透過硬件或軟件使得一台计算机系统(称作主host)在行为上类似于另一台计算机系统(称作客户guest)。模拟器一般允许在主系统上运行给客户系统设计的软件或者外设。模拟(emulation)是指在一台电子设备或一个计算机程序能够模拟(emulateor imitate)另外一台设备或程序。例如:很多制造商生产的打印机模拟惠普LaserJet打印机,使得大量设计给惠普打印机的软件也能在这些品牌打印机上使用;在PC上运行虚拟机执行其他操作系统或者电视游戏和街机;虚拟光驱;一些基于FPGA的硬件模拟器。 在中国,自动控制领域把simulation翻译为仿真,emulation翻译为模拟。例如:核电站仿真、电厂仿真等等。而2002年全国科学技术名词审定委员会公布出版的《计算机科学技术名词》(第二版)把simulation翻译为模拟,emulation翻译为仿真。这造成了极大的混淆。.

新!!: 反汇编器和仿真器 · 查看更多 »

程序自修改

程序自修改(Self-modifying code)是指程序在运行期间(Run time)修改自身指令。可能的用途有:病毒利用此方法逃避杀毒软件的查杀,反静态分析,反盗版 ,單晶片程序升级。.

新!!: 反汇编器和程序自修改 · 查看更多 »

计算机程序

计算机程序(Computer Program)是指一组指示计算机或其他具有訊息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体--结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语(編譯器)同時也會烹饪手法的人(体--结构)来做这道菜。 通常,以英文文本為基礎的计算机程序要经过編譯和連結而成为一种人们不易看清而计算机可解讀的一連串數字的格式,然后放入运行。未经编译就可运行的程序,通常称之为脚本程序(script)。.

新!!: 反汇编器和计算机程序 · 查看更多 »

调试工具

調試工具亦稱侦错工具、除錯工具、除錯程式、調試器、--,英文名稱為Debugger,指一種用於调试其它程式的電腦程式及工具。能夠讓程式碼在指令組模擬器(ISS)中可以檢查運行狀況以及選擇性地運行,以便排错、除錯。當開發的進度遇到瓶頸或找不出哪裡有問題時,這技術將是非常有用的。但是將程式運行在除錯器之下,這將比直接在運作的平台以及處理器上執行還要來得慢。 當程式當機時,如果除錯器是屬於來源階段除錯器(source-level debugger)或象徵階段除錯器(symbolic debugger),除錯器即可以顯示出錯誤所在位置的原始碼,並使其於整合開發環境裡也能看見。要是屬於低階除錯器(low-level debugger)或機器語言除錯器(machine-language debugger)的話,它將能顯示的是一行一行的反組譯碼(這裡指的當機情況是指,當發生原因是因為程式設計師在設計上的疏失,使得程式無法繼續正常執行的情況。例如程式嘗試去調用某個對在該版本的CPU上而言是不合理的操作,或者是對保護或無法存取的記憶體位置進行寫入)。 典型的除錯器通常能夠在程式執行時擁有以下這些功能,例如單步執行(single-stepping)、利用中斷點(breakpoint)使程式遇到各種種類的事件(event)時停止(breaking)(一般用於使程式停止在想要檢查的狀態)、以及追蹤某些變數的變化。有些除錯器也有能力在想要除錯的程式在執行狀態時,去改變它的狀態,而不僅僅只是用來觀察而己。 一個好的除錯器存在的重要性不誇張。就算一個程式語言/平台在電腦的行程裡運作非常良好。有無除錯器以及除錯器的好壞,對於一個程式語言及平台來說,經常是能不能正常執行的重要因素。總之,軟體要能夠(或經常)執行在不同的除錯器下進行測試,是非常重要的。不過由於除錯器出現將做對軟體程式的內部時間的不可避免的變動。所以,即使是一個幾近完美的除錯器,在多工環境或分散式系統下,它也會更難去測試到執行時(runtime)的問題。 一個除錯器除了能夠用來除錯(debug),同樣的,它也經常被用來作為破解軟體的工具,像是用來跳過軟體的防拷貝保護,還有破解序號驗證,以及其它軟體保護功能。 大部份的主流除錯工程,譬如gdb和dbx提供基於主控台的命令提示介面(console-based command line)。除錯器前端應用,現在普遍是提供給整合式開發工具(IDE)做為除錯引撆、動態化、視覺化等特點。.

新!!: 反汇编器和调试工具 · 查看更多 »

逆向工程

逆向工程,又称反向工程,是一种技术过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是,在無法轻易获得必要的生产信息下,直接从成品的分析,推导产品的设计原理。 逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。.

新!!: 反汇编器和逆向工程 · 查看更多 »

GNU Binutils

GNU Binary Utilities或binutils是一整套的程式語言工具程式,用來處理許多格式的目的檔。當前的版本原本由在Cygnus Solutions的程式員以Binary File Descriptor library(libbfd)所撰寫。這個工具程式通常搭配GCC、make、和GDB這些程式來使用。 剛開始時,這個套件內只有幾支程式,但後來,由於功能需求近似,陸續加入了GNU組譯器(GAS)和GNU連結器(GLD)。一般來說,這些程式都很簡單,大部分的複雜性都存在於Binary File Descriptor library和libopcodes這些函式庫裡頭。 原來的BFD版本由David Henkel-Wallace和Steve Chamberlain所撰寫。Ken Raeburn和Ian Lance Taylor曾維護過。目前則是由Nick Clifton負責維護此版本。至於Linux上的版本,由H.J. Lu在維護。.

新!!: 反汇编器和GNU Binutils · 查看更多 »

GNU侦错器

GNU侦錯器(GNU Debugger,缩写:GDB),是GNU軟體系統中的標準侦錯器,此外GDB也是個具有移攜性的侦錯器,經過移攜需求的調修與重新編譯,如今許多的類UNIX作業系統上都可以使用GDB,而現有GDB所能支援除錯的程式語言有C、C++、Pascal以及FORTRAN。.

新!!: 反汇编器和GNU侦错器 · 查看更多 »

Hypervisor

Hypervisor,又稱虛擬機器監視器(virtual machine monitor,縮寫為 VMM),是用來建立與執行虛擬機器的軟體、韌體或硬體。 被Hypervisor用來執行一個或多個虛擬機器的電腦稱為主體機器(host machine),這些虛擬機器則稱為客體機器(guest machine)。hypervisor提供虛擬的作業平台來執行客體作業系統(guest operating systems),負責管理其他客體作業系統的執行階段;這些客體作業系統,共同分享虛擬化後的硬體資源。.

新!!: 反汇编器和Hypervisor · 查看更多 »

IDA Pro

IDA Pro,為Interactive Disassembler公司的反組譯與除錯工具的產品。常用於逆向工程。.

新!!: 反汇编器和IDA Pro · 查看更多 »

歸約

在可計算性理論與計算複雜性理論中,所謂的歸約是將某個轉換為另一個問題的過程。可用歸約法定義某些問題的複雜度類(因轉換過程而異)。 以直覺觀之,如果存在能有效解決問題B的算法,也可以作為解決問題A的子程序,則將問題A稱為「可歸約」到問題B,因此求解A並不會比求解B更困難。 一般寫作A ≤m B,通常也在≤符號下標使用的歸約類型(m:映射縮小,p:多項式縮減)。 將一組問題歸約到特定類型所產生的數學結構,通常形成预序关系,其等價類可用於定義求解難度和複雜度。.

新!!: 反汇编器和歸約 · 查看更多 »

汇编语言

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。 使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。 汇编语言使用助记符(Mnemonics)来代替和表示特定低级机器语言的操作。特定的汇编目标指令集可能会包括特定的操作数。许多汇编程序可以识别代表地址和常量的标签(Label)和符号(Symbols),这样就可以用字符来代表操作数而无需采取写死的方式。普遍地说,每一种特定的汇编语言和其特定的机器语言指令集是一一对应的。 许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编寫工具经常会提供巨集,它们也被称为--汇编器。 现在汇编语言已不像其他大多數的程序設計語言一樣被廣泛用于程序設計,在今天的實際應用中,它通常被應用在底層硬件操作和高要求的程序優化的场合。驅動程序、嵌入式操作系統和實時運行程序都会需要組合語言。.

新!!: 反汇编器和汇编语言 · 查看更多 »

注释 (计算机语言)

在计算机语言中,注释是计算机语言的一个重要组成部分,用于在源代码中解释代码的功用,可以增强程序的可读性,可维护性,或者用于在源代码中处理不需运行的代码段,来调试程序的功能执行。 注释在随源代码进入预处理器或编译器处理后会被移除,不会在目标代码中保留其相关信息。.

新!!: 反汇编器和注释 (计算机语言) · 查看更多 »

源代码

源代码(Source code),也称源程序,是指一系列人类可读的计算机语言指令。 在现代程序语言中,源代码可以是以书籍或者磁带的形式出现;但最常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。.

新!!: 反汇编器和源代码 · 查看更多 »

机器语言

机器语言(machine language)是一種指令集的體--。这种指令集称为機器碼(machine code),是電腦的CPU可直接解讀的資料。 機器碼有時也被稱為原生碼(Native Code),這個名詞比較強調某種程式語言或函式庫與執行平台相關的部份。.

新!!: 反汇编器和机器语言 · 查看更多 »

数据流分析

数据流分析 是一种用于收集计算机程序在不同点计算的值的信息的技术。一个程序的控制流图(control flow graph, CFG)被用来确定对变量的一次赋值可能传播到程序中的哪些部分。这些信息通常被编译器用来优化程序。数据流分析的一个典型的例子就是可到达定义的计算。 进行数据流分析的最简单的一种形式就是对控制流图的某个节点建立数据流方程,然后通过迭代计算,反复求解,直到到达不动点。这种一般的方法是由Gary Kildall在Naval Postgraduate School讲课时发明的。.

新!!: 反汇编器和数据流分析 · 查看更多 »

传出传入
嘿!我们在Facebook上吧! »