1. 怎樣查看一個軟體的源代碼
前提是你會編程,懂得代碼流程和代碼函數的用途
你在編寫個程序(反射),將軟體源代碼讀出來,就能知道它用了哪些函數,用了哪些方法,怎樣調用的
這樣你就不是知道了它是怎麼寫的,不過編寫反射程序蠻麻煩,現在我還在研究當中
一般軟體漏洞 可以用這個方法檢查出來,進行報復和修復。。。。現在的游戲外掛,就是利用這個原理編寫出來的
2. 怎樣閱讀linux源代碼
聽我的就是,問那麼多幹嘛,我在你身邊,你還走錯路!跟著我!不能給你幸福是我的錯,但誰讓你不幸福,我TMD去砍了他 查看文章
如何閱讀linux源代碼2007-09-01 14:04著linux的逐步普及,現在有不少人對於Linux的安裝及設置已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入了解Linux的也越來越多。而要想深入了解Linux,就需要閱讀和分析linux內核的源代碼。
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。另外還可以從互連網上下載,解壓縮後文件一般也都位於linux目錄下。內核源代碼有很多版本,目前最新的穩定版是2.2.14。
許多人對於閱讀Linux內核有一種恐懼感,其實大可不必。當然,象Linux內核這樣大而復雜的系統代碼,閱讀起來確實有很多困難,但是也不象想像的那麼高不可攀。只要有恆心,困難都是可以克服的。也不用擔心水平不夠的問題,事實上,有很多事情我們不都是從不會到會,邊干邊學的嗎?
任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對於Linux 內核源代碼的閱讀也同樣如此。下面我就把自己閱讀內核源代碼的一點經驗介紹一下,最後介紹Window平台下的一種閱讀工具。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識;2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內 核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/*/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。
void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。
scripts此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。
清楚了源代碼的結構組成後就可以著手閱讀。對於閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是分模塊進行。其實他們之間不是絕對的,而是經常結合在一起進行。對於Linux源代碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平台為例):
./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而對於象內存管理等部分,則可以單獨拿出來進行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然後進行專題閱讀,如進程部分,內存管理部分等。在每個功能函數內部應該一步步來。實際上這是一個反復的過程,不可能讀一遍就理解。
俗話說:「工欲善其事,必先利其器」。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!
3. 怎樣讀取exe文件的源代碼
1、在網路上搜索下載反編譯工具ILSpy,解壓後如圖,雙擊.exe文件打開解壓工具
4. 怎麼可以查看一個軟體的源代碼
前提是你會編程,懂得代碼流程和代碼函數的用途
你在編寫個程序(反射),將軟體源代碼讀出來,就能知道它用了哪些函數,用了哪些方法,怎樣調用的
這樣你就不是知道了它是怎麼寫的,不過編寫反射程序蠻麻煩,現在我還在研究當中
一般軟體漏洞
可以用這個方法檢查出來,進行報復和修復。。。。現在的游戲外掛,就是利用這個原理編寫出來的
5. 怎樣查看 Android APP 源代碼
用壓縮軟體打開apk文件,解壓出根目錄中的classes.dex文件
使用cmd ,dex2jar.bat classes.dex命令將classes.dex轉換為jar
再用jd-gui打開該jar就可以查看源碼了,如果apk安全性好的話,有些代碼是看不到的
6. 游戲軟體怎麼查看源代碼
源代碼是看不成的,因為游戲軟體打包好做成app的話,是沒法看源碼的,雖然存在一些特殊情況下,我們可以推測出exe程序是用什麼程序寫的。但是多數情況下,我們是無法只根據一個exe程序就判斷出來的。
根據exe程序我們是無法直接得到程序的源碼的。雖然也有一些用於逆向工程的辦法,但那不可能把已經是exe的程序反回到它原始的源碼情況。而且這些工具都很難用。你可以用「反編譯」搜到很多工具,但是說實話,即便是這方面的專家,要看懂反編譯以後的程序也不是一件輕松的事情。
7. 如何讀取exe文件的源代碼
到目前為止,還沒有一種反編譯的方法可以獲得百分百完整、准確的源代碼。
8. 如何閱讀源代碼
最近有做源碼閱讀的事情,覺得有些費盡,做了一些思考。 一個大項目的源代碼,不要過份詳細的閱讀。大項目,其代碼量基本上是可以嚇死人的。過份的關注細節,常常會拘泥於細節,而忽略了整體框架。當你能夠看清框架的時候,亦花費了太多的時間。 因此,閱讀一個大項目的源代碼,其目的不在於欣賞代碼細節,而在於迅速看清項目整體框架的大概面貌:都有那些模塊,這些模塊是幹嘛的(不關心具體怎麼干),模塊之間的通訊機制大概是怎樣的,然後在考慮子模塊,通常只要掌握兩級子模塊就夠了。花上1,2天的時間掌握這一切,就達到了閱讀大項目源碼的目的。因為一旦你掌握了框架,你就可以按照這個框架實現這個項目,雖然和原項目全然不同,但是完成的需求卻是一樣的。 在軟體中,架構才是本質。 也許你指望詳細閱讀大項目源代碼能看到高質量的代碼,但是,大項目通常都是團隊的勞動成果,每個人的不同水平造就了代碼質量的高高低低,一個人在不同時間不同環境的代碼質量也是不同的。要指望在大片源碼面前找到高質量,簡直是天方夜譚。 也許你要從閱讀源碼中掌握某項技術細節,比如bsp,又或者換裝,那麼,最好的建議是查找相關的技術文檔以及文檔上所附帶的sample code,這種sample code一般不會附帶任何干擾,簡潔得只是為了證明該技術而存在的。如果沒有這些東西,而只能從大項目源碼中找的話,你提前先了解了框架,能更快的查找和定位到表達該技術的文件。但是通常都會比較不幸,因為你為了明白這一技術,通常要先理解混入其中的另一技術。 最後談談怎樣才能閱讀到高質量的源代碼。何謂高質量?是指演算法出人一表(比如某種o(1)的排序法)?還是採用了極端深奧的語言特性將某實現完美表達(比如模板的靈活運用)?無論是哪種,最好的來源是書,如《STL詳解》,或者《inside XX》這樣的東西。書的作者通常就是這些高質量代碼的作者,他會帶領你探索這些源碼背後的真相。
9. 如何讀懂一個大型開源軟體的源代碼
開源項目一般都有示例,從示例入手。示例會有主入口,示常式序中會使用調用開源項目的代碼,這時就可以跟蹤到開源項目的源碼中了。這樣,你就有一個很清晰思路了.
10. 如何找到軟體的源代碼
軟體的源代碼,基本是沒有辦法的,因為軟體運行時都是編譯後的程序,也就是把源代碼翻譯成計算機能執行的代碼,一般的破解是破解功能限制,注冊限制,反編譯也只是能得到匯編代碼,也很難看懂的。