客戶端反編譯教學
『壹』 ios app客戶端可以反編譯嗎
ipa 文件其實是一個壓縮包,裡麵包括了可執行文件,資源文件等信息。 反編譯的話也可以,只是你要有足夠強的功底,就可以。這個至少匯編得會吧,然後可以根據反編譯出來的匯編寫出原來的OC程序。現在我沒有發現有什麼工具可以直接反編譯出ELF文...
『貳』 什麼是java代碼的編譯與反編譯
Java代碼的編譯與反編譯
2017-02-21Hollis數盟
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(Reverseengineering)也稱為侍梁計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、Java類的編譯與反編譯
我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。
2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。
五、反編譯工具
1、javap
2、Jad:官網(牆裂推薦)
客戶端:
可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。
因為我使用的是linux操作系統,所以我下載的是Linux版本的工具,這個工具下載好之後會有一個執行文件,敗吵只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼
Eclipse插件:
下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下『在打開Eclipse,Eclipse->Window->Preferences->Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置察談侍即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼
『叄』 為什麼用visual studio生成的dll可以反編譯解決思路
第一、用某些程序集加密混淆工具,比如intellilock、.net reactor,但一定要最新版本的。
第二、核心演算法用c++寫成dll,然後c#調用這個dll;
第三、某些東西可以做在伺服器端,讓客戶端的程序需要時從伺服器端取。
『肆』 易語言做的游戲輔助都是通過什麼跟游戲聯繫上的
1、易語言做的游戲輔助都是通過反編譯工具、內存搜索工具等跟游戲聯繫上的。
易語言通常做的輔助。「內存輔助」,就是通過一些反編譯工具、內存搜索工具等,找到游戲的基址和偏移(指針),然後基址+偏移可以得到一個地址,那麼這個地址中就有想要的游戲相關數據,比如血、藍、金錢等等。那麼找到這些可用的數據後要做成輔助的話,就相當於把在找基址、偏移的時候使用的那些內存搜索工具之類的方法全部集合在一起。
首先使用內存搜索工具找游戲基址、偏移,第一步就是要找到游戲的客戶端進程名。比如:QQ飛車是GameApp.exe,那後面的GameApp.exe就是QQ飛車客戶端的進程名。找到後就要獲取進程,然後就可以進行下一步操作了,比如寫內存、讀內存等等。如果是像這種有客戶端的網游或者單機游戲。那麼通常都是內存掛,也就是通過游戲進程和它聯繫上的。其實不只是易語言,你用其他編程語言,方法都是一樣的。
2、易語言
易語言是一門以中文作為程序代碼的編程語言,創始人是吳濤,其最早的版本的發布可追溯至2000年9月11日,隸屬於大連大有吳濤易語言軟體開發有限公司。早期版本的名字為E語言,創造易語言的初衷是為了進行用中文來編寫程序的實踐。易語言採用全漢語編程,簡單易用,用戶可在兩個月甚至更短的時間內學到精通程度。從2000年至今,易語言已經發展到一定的規模,功能上、用戶數量上都十分可觀。
3、易語言支持庫
易語言支持庫類似於普通的程序的DLL文件。這個支持庫是易語言專用的,別的程序 調用不了的,擴展名有fnr、fne、npk三種。
fnr、fne都是製作好的 DLL文件,例如系統核心支持庫、應用介面支持庫。該類支持庫一般由用戶使用 C++或Delphi製作,具體可以看易語言支持庫開發手冊。npk屬於易語言COM包裝支持庫,該支持庫是引用COM包裝庫生成的,例如WebBrowser、Windows媒體播放器。該擴展名格式支持庫可用記事本、 寫字板打開。該支持庫可以由用戶製作,製作方法:在易語言上點擊工具--「類型庫或OCX組件→支持庫」命令。