手把手教你反編譯別人的app

來源:互聯網
上載者:User

標籤:組合語言   tar   技術   div   詳細   alt   rip   很多   系統   

雖然iOS系統相比於其他手機作業系統相對安全,但是這個安全並不是絕對的,我一直相信,道高一尺魔高一丈。此文想以實際例子出發,告訴大家,如何去反編譯一個app,並且從某個角度來說,iOS沒有傳說中的“安全”。

這裡只最簡單的結論給大家,具體原理以及工具的詳細使用,請各位自行Google,為什麼這麼做呢,因為我想用最簡單的語言,讓沒有彙編基礎的同學也能明白。

將用以下幾個方面來闡述我的觀點:
  • iOS app可以“有條件”地被反編譯
  • 脫掉App Store給“二級制檔案”穿上的外衣
  • 如何利用工具去反編譯
  • 在感興趣的地方產生虛擬碼
  • 如何預防反編譯
iOS app可以“有條件”地被反編譯

首先,告訴大家一個不幸的訊息,上架至App Store的app,被apple加密了。所以標題才是“有條件”才能進行反編譯,令人欣喜的是,在debug下產生的ipa或者是release下的ipa包或者是渠道包(各種應用市場能下的ipa包)都能直接反編譯。

脫掉App Store給“二級制檔案”穿上的外衣

當然,引言已經說了,道高一尺魔高一丈,就算是被apple加密的ipa,其實也是可以反編譯的,只不過相對麻煩罷了。
來來來,給你們幾個工具,就可以解掉apple的加密了。

  • clutch
  • dumpdecrypted
  • gdb
  • AppCrackr

由於AppCrackr被很多開發人員吐槽,這個傻瓜式的解密會嚴重導致盜版泛濫,所以這個工具已經很不好用了。
這裡就不展示demo了,感覺如果把App Store上的東西反編譯出來發到網上去,我感覺我的程式員生涯可能就要到頭了。

如何利用工具去反編譯

這裡會介紹兩個工具class-dumpHopper Disassembler
首先,先擼一個最簡單的app來做小白鼠。(包含二進位檔案&dump結果)
看圖,就是這樣,我只改了ViewController這個類。


ViewController.h
ViewController.m

由代碼可以看出,我就寫了兩個方法testClassDumptestHideClassDump,後者沒有聲明在.h中(ps:我想實驗這樣能不能被反編譯到)。

ok,前戲都做完了,可以開始幹活了。

我們run一下工程,然後開啟Products檔案夾下的DecompilingTest.app所在目錄,顯示包內容,拿到二進位檔案


二進位檔案

然後我是複製到案頭,然後執行下述命令,即可拿到工程中的.h檔案。


執行命令

OK,得到下述結果,我們看看拿到的ViewController.h裡面,能拿到什麼方法


結果

事實證明,沒有聲明的方法也被dump出來了。

下一步我們要做的就是看看能不能拿到這兩個方法的具體實現了,接下來我們用Hopper Disassembler來試試。

Hopper Disassembler的用法很簡單,只要將二進位檔案拖進去就行了。看看拖進去之後的結果。


反編譯之後

此時心中一萬頭草泥馬飛奔而過,what‘s the fk!!一堆組合語言寶寶看不懂啊。(當然那個ret應該是return的意思我猜)

在感興趣的地方產生虛擬碼

Don‘t worry!點右上方的if(b)f(x);按鈕,我們能看到這個方法的虛擬碼,大部分的時候我們能從虛擬碼中看出我們需要的資訊。

結果如下:


虛擬碼1
虛擬碼2

至此,兩個方法都被反編譯出來了!!

這裡需要注意,就算方法沒有聲明在.h中,也能被dump,之後就能被反編譯了。

如何預防反編譯

說了這麼多,我們預防呢,是不是需要像Java的一樣加上各種複雜的混淆呢。

其實我覺得大可不必,本身反編譯成本就很大,代碼這麼多,一個個反編譯過來是在蛋疼,就算有虛擬碼也需要理解,而且有些代碼就算有虛擬碼也很難理解。

只要做好核心代碼,做好混淆就行了,比如涉及到密碼,核心演算法。

總結:

沒有絕對安全的系統,也沒有駭客破不掉的系統,所有需要的只是時間而已。



原文連結:http://www.jianshu.com/p/10873c5c1e08

手把手教你反編譯別人的app

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.