導航:首頁 > 編程語言 > 二進製程序靜態分析

二進製程序靜態分析

發布時間:2022-09-18 01:18:28

1. 軟體工程 靜態測試的主要方法有哪些

(1)人工檢測:是指不依靠計算機而是靠人工審查程序或評審軟體,包括代碼檢查、靜態結構分析和代碼質量度量等;

(2)計算機輔助靜態分析:利用靜態分析工具對被測試程序進行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構造。

靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以藉助軟體工具自動進行。

(1)二進製程序靜態分析擴展閱讀:

代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變數檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。

在實際使用中,代碼檢查比動態測試更有效率,能快速找到缺陷,發現30%~70%的邏輯設計和編碼缺陷;代碼檢查看到的是問題本身而非徵兆。但是代碼檢查非常耗費時間,而且代碼檢查需要知識和經驗的積累。

代碼檢查應在編譯和動態測試之前進行,在檢查前,應准備好需求描述文檔、程序設計文檔、程序的源代碼清單、代碼編碼標准和代碼缺陷檢查表等。靜態測試具有的發現缺陷早、降低返工成本、覆蓋重點和發現缺陷的概率高的優點以及耗時長、不能測試依賴和技術能力要求高的缺點。

2. 動態調試和靜態調試是什麼意思有什麼區別

動態調試是指軟體作者利用集成環境(IDE)自帶的調試器跟蹤自己軟體的運行,來協助解決自己軟體的錯誤。 要成為一位優秀的軟體工程師,調試能力是不可或缺的。
動態調試技術在軟體逆向工程領域也是一個很熱門的概念,它是與靜態分析技術相對而言的。靜態分析技術是指破解者利用反匯編工具將二進制的可執行文件翻譯成匯編代碼,通過對代碼的分析來破解軟體;而動態調試則是指破解者利用調試器跟蹤軟體的運行,尋求破解的途徑。

3. 什麼是二進制分析

二進制分析創建了一種行為模式,該模式通過利用可運行的機器代碼分析應用程序的控制和數據流得到的,是一種攻擊者可以識別的方式。與源代碼分析工具不同,這種方法精確地檢測導致核心應用程序和覆蓋范圍擴展在第三方庫、預包裝組件、編譯器或平台的具體說明引進代碼的漏洞。
關於二進制分析,我要推薦Veracode的專利技術——靜態二進制分析,它使企業可以在一個易於使用的平台上進行應用程序的安全診斷,作為企業正式軟體的發布、驗證或驗收過程的一部分。這無需提供源代碼或其他知識產權。

4. 什麼是軟體測試的靜態分析

靜態分析,是相對動態說的,即不運行程序。

使用的工具主要是你的眼睛,常用在文檔測試、白盒測試(代碼審查/走查)、UI界面測試。

靜態測試,通過評審文檔、閱讀代碼等方式測試軟體稱為靜態測試,通過運行程序測試軟體稱為動態測試。

(4)二進製程序靜態分析擴展閱讀:

簡單地說就是抽象了時間因素和具體變動的過程,靜止地孤立地考察某些經濟現象。它一般用於分析經濟現象的均衡狀態以及有關經濟變數達到均衡狀態所需要的條件。 常用的靜態分析法有:相對數分析法、平均數分析法、比較分析法、結構分析法、因素替換分析法、綜合計算分析法、價值系數分析法等。

5. 程序靜態分析的分析技術及實踐

程序靜態分析(Program Static Analysis)可以幫助軟體開發人員、質量保證人員查找代碼中存在的結構性錯誤、安全漏洞等問題,從而保證軟體的整體質量。還可以用於幫助軟體開發人員快速理解文檔殘缺的大規模軟體系統以及系統業務邏輯抽取等系統文檔化等領域。 如開發20年以上的金融核心COBOL系統,動輒上千萬行代碼的系統規模。對於理解這樣規模的系統,基於程序靜態分析的輔助理解工具就能發揮積極作用。
本文首先對程序靜態分析的特點、常用靜態分析技術、靜態分析實現方式進行描述,然後通過一個實例講解了程序靜態分析的執行過程。 程序靜態分析是與程序動態分析相對應的代碼分析技術,它通過對代碼的自動掃描發現隱含的程序問題,主要具有以下特點:
(1)不實際執行程序。動態分析是通過在真實或模擬環境中執行程序進行分析的方法,多用於性能測試、功能測試、內存泄漏測試等方面。與之相反,靜態分析不運行代碼只是通過對代碼的靜態掃描對程序進行分析。
(2)執行速度快、效率高。目前成熟的代碼靜態分析工具每秒可掃描上萬行代碼,相對於動態分析,具有檢測速度快、效率高的特點。
(3)誤報率較高。代碼靜態分析是通過對程序掃描找到匹配某種規則模式的代碼從而發現代碼中存在的問題,例如可以定位strcpy()這樣可能存在漏洞的函數,這樣有時會造成將一些正確代碼定位為缺陷的問題,因此靜態分析有時存在誤報率較高的缺陷,可結合動態分析方法進行修正。 (1)詞法分析:從左至右一個字元一個字元的讀入源程序,對構成源程序的字元流進行掃描,通過使用正則表達式匹配方法將源代碼轉換為等價的符號(Token) 流,生成相關符號列表,Lex為常用詞法分析工具。
(2)語法分析:判斷源程序結構上是否正確,通過使用上下文無關語法將相關符號整理為語法樹, Yacc為常用工具。
(3)抽象語法樹分析:將程序組織成樹形結構,樹中相關節點代表了程序中的相關代碼,目前已有javacc/ Antlra等抽象語法樹生成工具。
(4)語義分析:對結構上正確的源程序進行上下文有關性質的審查。
(5)控制流分析:生成有向控制流圖,用節點表示基本代碼塊,節點間的有向邊代表控制流路徑,反向邊表示可能存在的循環;還可生成函數調用關系圖,表示函數間的嵌套關系。
(6)數據流分析:對控制流圖進行遍歷,記錄變數的初始化點和引用點,保存切片相關數據信息。
(7)污點分析:基於數據流圖判斷源代碼中哪些變數可能受到攻擊,是驗證程序輸入、識別代碼表達缺陷的關鍵。
(8)無效代碼分析,根據控制流圖可分析孤立的節點部分為無效代碼。
程序靜態分析是在不執行程序的情況下對其進行分析的技術,簡稱為靜態分析。而程序動態分析則是另外一種程序分析策略,需要實際執行程序。大多數情況下,靜態分析的輸入都是源程序代碼,只有極少數情況會使用目標代碼。靜態分析這一術語一般用來形容自動化工具的分析,而人工分析則往往叫做程序理解。
靜態分析越來越多地被應用到程序優化、軟體錯誤檢測和系統理解領域。Coverity Inc.的軟體質量檢測產品就是利用靜態分析技術進行錯誤檢測的成功代表。國內某軟體公司的閃蝶(BlueMropho)代碼分析平台,是利用程序靜態分析技術專注於大型機遺留系統的代碼理解領域,尤其擅長分析千萬行代碼規模級的COBOL系統。

6. hex文件轉換成C語言

文件有兩種,一種是文本文件,一種是程序二進制文件,不管哪種文件都可以用十六進制編碼來顯示,稱為hex文件。


1、文本Hex文件一般不需要轉成C語言,更多的是程序二進制文件,用十六進制顯示,可以轉換成C語言,一般使用相應的反匯編程序來實現,這方面的工具很多,不同的平台略有不同。Windows平台一般常用的OllyDbg、Windbg、IDA,Linux平台使用最多的是GDB和Linux版的IDA。


OllyDbg,簡稱OD,一般是軟體逆向工程愛好者,最先使用的一個工具,但是因為當下不在更新,所以一般用一般用於學習使用,下圖中左上角的區域即為反匯編區域 ,用戶可以根據匯編指令,分析程序演算法,然後自己編寫代碼。

通過這個實例 ,相信應該能理解一個大致的流程啦。

7. 如何使用JVisualVM進行性能分析

1、本地機器的程序直接可以監聽到

2、遠程機器的程序需要加上JVM參數

-Dcom.sun.management.jmxremote=
true

-Dcom.sun.management.jmxremote.port=
9090

-Dcom.sun.management.jmxremote.ssl=
false

-Dcom.sun.management.jmxremote.authenticate=
false

備註:另外需要檢查

hostname –i

看解析出來是否為本地的IP,如是127.0.0.1或者IP為多個IP中之一,則其他的IP無效,會連接不上。

這里有個分析案例,利用jvisualvm分析tomcat的問題:

http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安裝

tools->plugin->Available Plugin 會有值得安裝的插件,如:VisualGC
JConsole

插件列表:https://visualvm.dev.java.net/plugins.html

注意:上面提供的埠配置有些麻煩,不如直接這樣做:

要使用 VisualGC
必須在遠程機上啟動jstatd代理程序,否則會顯示 「not supported for this jvm」 錯誤

而啟動 jstatd 時會有一個許可權問題,需要做如下修改:

nano /opt/sun-jdk-
1.6
.
0.26
/jre/lib/security/java.policy

Java代碼
nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy

增加下列行

Java代碼
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;

};

然後啟動 jstatd並且不要關閉

如:

Threads

查看線程的運行情況,運行、停止、睡眠、等待,根據這些結合實際程序運行的邏輯分析。

找到可疑份子,可以Thread Dump 找出具體是哪個線程在作祟。

參看這個例子:http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

profile

關於如何使用,如何分析程序,可以參看這個例子:http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/

8. 程序靜態分析的著名的靜態分析工具

雨田靜態分析系統V2.1
產品介紹
簡介
雨田靜態分析系統是擁有獨立知識產權的國產軟體,能夠對.c/.cpp文件進行靜態分析。主要分析內容包括控制流分析、數據流分析、基本度量指標的計算、編碼規則的違反情況檢查等。在對文件進行詳盡分析基礎上,結合系統特有的質量模型,雨田靜態分析系統對被分析的代碼進行了綜合質量評估,以直觀的形式顯示編碼的質量水平。系統提供了內容豐富的靜態分析結果和多角度的質量分析報告,為對編碼進行有效評估提供重要的參考,也為解決代碼中存在的問題提供明確的線索,進而促進軟體質量得到有效地改善與提高。
特點
指標豐富
雨田靜態分析系統詳細計算了代碼相關指標、注釋信息相關指標、數據流相關指標、復雜度相關指標、循環相關指標、操作符及操作數指標、路徑指標等多個方面的指標,為對代碼質量進行有效的評價提供堅實的基礎。
規則全面
雨田靜態分析系統以MISRA為基礎,結合眾多c語言專家的研究成果以及多名資深c/c++開發人員的經驗,提煉出了300餘條可檢查的質量規則,從代碼的正確性、健壯性、可讀性、語義唯一性、環境兼容性等多個方面對之進行詳盡地檢查,輔助開發及測評人員查找代碼中的問題。
功能緊湊、簡單易用
雨田靜態分析系統力求以最簡潔的方式提供最實用的分析結果。用戶僅僅需要執行「打開」操作,就可以查看工程中所有源文件的度量指標、相關代碼、控制流圖、以及規則檢查結果等重要信息。在執行一次「綜合質量分析」操作,就可以查閱工程中所有源文件及其逐函數的指標匯總報告、規則檢查報告、可讀性報告、可維護性報告、可測試性報告以及質量評估報告等眾多分析報告。
使用靈活
雨田靜態分析系統允許用戶選擇語法分析策略、分析報告內容以及編碼規則,還允許用戶調整相關編碼規則的邊界(閥值),從而使之成為自己特定的編碼規則。藉助於自身具備的靈活性,雨田靜態分析系統盡可能的適應用戶的應用環境。
主要功能
控制流分析
通過對c語言及c++語言的順序結構、選擇結構和循環結構等類型代碼塊自身及相互關系的詳盡分析,從而獲取被測文件中每個函數及類方法對應的控制流圖。通過對文件中函數間調用關系的分析,系統能夠獲取文件內函數間的調用關系;通過對文件中類對象的使用情況分析,可以獲得文件中的類關系圖。

數據流分析
系統對全局變數、類屬性、函數參數、局部變數等數據載體進行了其所在的作用域內的
詳盡的數據分析,對函數間的調用關系及數據傳遞也進行了必要的分析,從而能夠以靜態的視角把握文件中每個變數的數據變化過程,為後續的同數據流相關指標計算及代碼質量檢查打下了堅實的基礎。
基本指標計算
基於對文件中代碼進行分析而獲取的數據,雨田靜態分析系統從代碼、注釋、數據流、
路徑、復雜度、循環、操作符及操作數等多個角度計算出相應的指標。

規則檢查
系統以 MISRA編碼規則為依據,系統分析了三百餘條最常見的編碼問題。對於檢查出的問題,系統會給出問題發生的位置,原因以及對應的規則,方便用戶查證並改進。

綜合質量評估
通過對計算出的指標以及查找出的違反編碼規則信息的分類、甄別,根據相關信息在代碼綜合質量中的影響程度,雨田靜態分析系統從可讀性、可維護性以及可測試性等三個角度對文件整體、類整體、逐函數等不同層級的代碼進行了綜合質量評定,並給出直觀的分類評價報告及綜合評價報告,

9. 靜態分析是指

經濟領域概念
靜態分析是一種分析經濟現象的均衡狀態以及有關的經濟變數達到均衡狀態所需要條件的分析方法。[1]而不考慮經濟現象達到均衡狀態的過程,它完全抽象掉了時間因素和具體的變化過程,是一種靜止地、孤立地考察某種經濟事物的方法。
網路


靜態分析
經濟領域概念
靜態分析是一種分析經濟現象的均衡狀態以及有關的經濟變數達到均衡狀態所需要條件的分析方法。[1]而不考慮經濟現象達到均衡狀態的過程,它完全抽象掉了時間因素和具體的變化過程,是一種靜止地、孤立地考察某種經濟事物的方法。

中文名
靜態分析
外文名
static analysis
指標
總量指標、相對指標、平均指標、標志變異指標等
應用
靜態計算機科學、經濟學、工程、力學、機械
釋義
根據既定的外生變數值求得內生變數的分析方法
內涵
靜態分析法是根據既定的外生變數值求得內生變數的分析方法,是對已發生的經濟活動成果,進行綜合性的對比分析的一種分析方法。

如研究均衡價格時,舍掉時間、地點等因素,並假定影響均衡價格的其他因素,如消費者偏好、收入及相關商品的價格等靜止不變,單純分析該商品的供求達於均衡狀態的產量和價格的決定。簡單地說就是抽象了時間因素和具體變動的過程,靜止地孤立地考察某些經濟現象。它一般用於分析經濟現象的均衡狀態以及有關經濟變數達到均衡狀態所需要的條件。

常用的靜態分析法有:相對數分析法、平均數分析法、比較分析法、結構分析法、因素替換分析法、綜合計算分析法、價值系數分析法等。

指標

10. 做靜態代碼分析都是用那個軟體的

本文首先介紹了靜態代碼分析的基本概念及主要技術,隨後分別介紹了現有 4 種主流 Java 靜態代碼分析工具 (Checkstyle,FindBugs,PMD,Jtest),最後從功能、特性等方面對它們進行分析和比較,希望能夠幫助 Java 軟體開發人員了解靜態代碼分析工具,並選擇合適的工具應用到軟體開發中。


引言

在 Java 軟體開發過程中,開發團隊往往要花費大量的時間和精力發現並修改代碼缺陷。Java 靜態代碼分析(static code analysis)工具能夠在代碼構建過程中幫助開發人員快速、有效的定位代碼缺陷並及時糾正這些問題,從而極大地提高軟體可靠性並節省軟體開發和測試成 本。目前市場上的 Java 靜態代碼分析工具種類繁多且各有千秋,因此本文將分別介紹現有 4 種主流 Java 靜態代碼分析工具 (Checkstyle,FindBugs,PMD,Jtest),並從功能、特性等方面對它們進行分析和比較,希望能夠幫助 Java 軟體開發人員了解靜態代碼分析工具,並選擇合適的工具應用到軟體開發中。

靜態代碼分析工具簡介

什麼是靜態代碼分析

靜態代碼分析是指無需運行被測代碼,僅通過分析或檢查源程序的語法、結構、過程、介面等來檢查程序的正確性,找出代碼隱藏的錯誤和缺陷,如參數不匹配,有歧義的嵌套語句,錯誤的遞歸,非法計算,可能出現的空指針引用等等。

在軟體開發過程中,靜態代碼分析往往先於動態測試之前進行,同時也可以作為制定動態測試用例的參考。統計證明,在整個軟體開發生命周期中,30% 至 70% 的代碼邏輯設計和編碼缺陷是可以通過靜態代碼分析來發現和修復的。

但是,由於靜態代碼分析往往要求大量的時間消耗和相關知識的積累,因此對於軟體開發團隊來說,使用靜態代碼分析工具自動化執行代碼檢查和分析,能夠極大地提高軟體可靠性並節省軟體開發和測試成本。

靜態代碼分析工具的優勢

1. 幫助程序開發人員自動執行靜態代碼分析,快速定位代碼隱藏錯誤和缺陷。

2. 幫助代碼設計人員更專注於分析和解決代碼設計缺陷。

3. 顯著減少在代碼逐行檢查上花費的時間,提高軟體可靠性並節省軟體開發和測試成本。


Java 靜態代碼分析理論基礎和主要技術

閱讀全文

與二進製程序靜態分析相關的資料

熱點內容
港澳台版本有什麼區別 瀏覽:263
java四個月能學到什麼 瀏覽:46
開發板和linux文件 瀏覽:202
appstore外國帳號怎麼看預約游戲 瀏覽:137
有什麼免費加速網站的cdn 瀏覽:781
哪個文件存在最安全 瀏覽:199
淘寶導航欄分割線代碼 瀏覽:271
win10開不了機按f8沒用 瀏覽:12
河南營銷網站推廣多少錢 瀏覽:135
華為暢享6手機文件管理 瀏覽:939
linux驅動環境 瀏覽:893
ae用什麼打開文件 瀏覽:877
湖南嶽陽大數據中心 瀏覽:710
DSP大數據公司 瀏覽:510
win10檢測不到u盤啟動 瀏覽:941
電腦文件怎麼重命名文件 瀏覽:507
哪個協議用來傳輸文件協議 瀏覽:61
ce改股票教程 瀏覽:513
如何做一個數據統計資料庫 瀏覽:181
手機內存書旗小說是哪個文件夾 瀏覽:879

友情鏈接