1. 如何對VC中的lib進行反編譯
反編譯vc的程序幾乎是不可能的,,因為vc編譯的程序,用的是C/C++,裡面可能調用了好多指針,編譯的原理不一樣,反編譯的結果也不同的
2. C語言lib文件用什麼工具反編譯
反匯編 ,基本要按匯編去看待的了
3. 如何對一個lib靜態庫保護起來不被反編譯
這個太麻煩了吧,除非他反編譯成匯編,讀懂全部匯編語言,然後用c去實現。逆向工程量太大。我們做一般是加花指令,迷宮函數來混淆代碼。
4. 如何看懂lib文件里的東西
想用一個靜態庫必須要裡面函數的聲明,就是頭文件。有些動態庫都需要頭文件呢~沒有頭文件絕對不可能。
完全看懂是不可能的。要是看懂了相當於反編譯了!
如果只要使用,找出一部分函數是有可能的。
你去網上搜索一下「lib 文件結構」
其實可以看到一部分,看到一些函數,你用記事本打開lib。可以看到
xxx@yyy@@zzz 之類的東西。
zzz代表函數名,yyy代表該函數所在的類名,zzz代表參數類型。
可以猜到一部分`~,這個是C++寫成的庫,C語言寫的庫是沒有類名和參數名的(因為不支持類也不支持重載)。
你再把相映的頭文件自己補寫上,
再#include "頭文件"
#pragma comment(lib,"lib文件");
祝你好運了~~
5. erlang 反編譯工具+方法
編譯好的erlang 的debug版本程序反編譯步驟如下(比如 a.beam):
1、{ok, {_, [{abstract_code, {_, Ac}}]}} = beam_lib:chunks(code:which(a), [abstract_code]).
2、io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(Ac))]).
這樣我們就得到的a.beam的預處理之後的程序。
如果我們想查看beam文件的匯編程序erts_debug:df(a). 執行完畢會得到a.dis文件,裡面就是對應的匯編程序
注意只有debug版本才能反編譯
6. 安卓app360加固怎麼反編譯
1 對比
上傳demo進行加固,解包後對比下原包和加固包,發現加固包在assets文件夾下多了libjiagu.so,libjiagu_x86,lib文件夾下多了libjiagu_art.so,同時修改了dex文件和androidManifest文件
打開manifest文件,看到xxx加固對Application標簽做了修改,添加了殼入口,也就是我們反編譯後看到的StubApplication.smali這個文件。
相比於之前版本的加固,自從1.x.x.x加固版本之後,多了幾次反調試,使得動態難度稍微增大了一些,不過針對脫殼機脫殼,再多了反調試也是無用。或者通過修改系統源碼,也能達到消除反調試的作用。
2 動態調試
(1)把app安裝到手機,以調試模式打開app
(2)以shell模式root許可權打開IDA的android_server監聽
(3)tcp轉發
(4)打開IDA,修改配置為在進程開始時下斷
(5)搜索到進程後jdwp轉發,pid值即為我們進程號,並在命令行下附加。
成功附加後,可以下段了,打開Debugger Option
我們選擇在線程開始和庫載入時下斷,修改成功後,jdb附加,點擊運行
程序會斷在elf頭處,按下G鍵,搜索mmap,在mmap函數的段首和斷尾下段
F9運行,來到斷尾時F8單步,
來到此處時,在 BLunk_5C999C2C下斷,F9一下,F7跟進去
跟進去今後在BLX LR處進行下斷,此處就是進行反調試的地方,原理依然是獲取TracePid的值判斷當前是不是處於調試狀態,建議第一次調試的人在fgets和fopen處下斷,再f7跟進此調用就可以看到TracePid的值了。
跟進去之後,我們直接把方法移到最下方,就可以看到kill符號了,這就是殺進程的地方,如果當前處於調試狀態,則直接結束進程。
我們在此函數的所有cmpR0,#0處下斷,F9一下後即斷在斷點處,觀察寄存器窗口的R0值,實質就是當前的TracePid的16進制的值
不確定的可以使用cat /proc/pid/status進行對比一下,我們直接把R0置0,右鍵選擇Zero Value即可清0,繼續F9
我們看到程序又來到了mmap處,繼續f9
當繼續斷在調用反調試功能的方法時,繼續F7跟進,依然在所有的cmp R0,#0處下斷,斷下後把R0清0後繼續F9運行
目前的規律是,調用BLXLR的第一次,第二次和第四次是進行反調試判斷的,第三次並不影響,可以直接f9跳過去,三次反調試搞定後,就可以愉快的F9運行並觀察堆棧窗口了
當看到出現如下所示時:
說明殼已經開始解密並釋放dex文件了,我們直接F8單步十幾步,最後F9一下就可以看到我們需要的dex頭了
直接腳本mp出來即可,最後把libjiagu的所有文件刪除,並修復下Application標,如果存在則修復,不存在刪除即可
7. 反編譯設置有成功的嗎
一、dexmp方法dexmp是emulator自帶提供的查看dex文件的工具,可使用類似這樣的命令將dex文件mp到txt文件中:D:\ProgramFiles\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexmp.exe-dclasses.dex>spk.mp.txt得到的文件內容,描述了類的信息,但實在是不好讀啊~~~~二、dex2jar+XJad方法該方法是使用dex2jar.jar包,將classes.dex文件解包成jar,在通過XJad(或者其他class反編譯工具)進行java反編譯。如:1、dex2jar.batd:\play\classes.dex默認的輸出路徑同classes.dex,生成的文件名為classes.dex.dex2jar.jar2、使用XJad反編譯該jar包之後的使用方法,大家都懂的:)該方法的好處在於,通過XJad反編譯後,大家可直接開到java源文件,缺點在於只能反編譯出開發時的java文件,而開發時使用的lib包不能反編譯出來。三、AXMLPrinter2.jar+baksmali.jar+smali.jar方法這個方法就強大了,AXMLPrinter2是還原AndroidManifest.xml和main.xml的工具,直接打開這兩個xml文件是亂碼,而通過還原之後,可以很明白的看到裡面的內容(我猜測還是使用了位元組異或的方式加的密)。
8. 如何把.LIB文件反編譯成C
目前的做法是轉換成匯編,然後自己翻譯成C語言。我之前做過PIC的機器碼核心演算法用翻譯成了C語言
9. 怎麼打開lib中的包
lib下的包是.jar文件,改為。rar或者。zip就好了就能解壓了,或者直接導到eclipse里打開,不過都是經過反編譯過的
10. 如何從lib中破譯出代碼
很簡單,直接解壓,用java 開發工具,idea ,MyEclipse 什麼的,打開就可以看到代碼了。也可以用反編譯打開。