A. 如何看到一個APP應用的源代碼
一、安卓APP
用android-killer可以反編譯apk,比較方便,不過只能看到smail文件,學習一點smail,你可以看明白他的源代碼的意思,如果有殼的話,先改apk後綴後為zip,找到加殼的so文件,一般如名字中帶xxxprotect.so 用網路,360,騰訊廠商加固的話,也都有對應特點,然後把這個so文件用IDA pro打開,找到它的關鍵加密演算法。找到後,一版是不讓進加密演算法,直接return。就可去殼,去了殼之後,再進行重打包簽名,測試下。
二、ios上的app一般走如下流程
1、 拿個越獄機-下好工具
2、 去越獄平台下個想分析的應用(或者去app store下,用解密工具解密一下)
3、 導入reveal分析頁面,得到想要的知道的具體視圖類或者大致范圍
4、 分析class-mp中,找到想要的類和函數
5、 在IDA或者Hopper中找到具體函數,查看匯編邏輯
6、 修改相應的邏輯,達到篡改目的,重新打包
B. 求so文件反編譯,不要F5的源碼
別再加分了,浪費呀;具體都是要看你的so工程的規模的,外面的反編譯都是收費的;雖然我也搞這個,但反編譯真心很累
你可以把SO文件上傳網路網盤,看誰有空閑時間幫你看下咯;如果是幾百K的SO…還要是搞整個的話還是算了吧,這個不是兩三百分就搞定的
C. android jni 使用第三方提供的.so庫及所對應的jar包
1.將SO文件直接放到libs/armeabi下,然後代碼中System.loadLibrary("xxx");再public native static int xxx_xxx_xxx();接下來就可以直接調用xxx_xxx_xxx()方法;
2.第二種方案,創建自己的SO文件,在自己的SO文件里調用第三方SO,再在程序中調用自己的SO,這種比較復雜,需要建java類文件,生成.h文件,編寫C源文件include之前生成的.h文件並實現相應方法,最後用android NDK開發包中的ndk-build腳本生成對應的.so共享庫。 http://www.ijiami.cn/newsInfo?id=293&v=3
2. DEX加殼保護,DEX指令動態載入保護和高級源碼混淆保護。其中DEX加殼保護是「愛加密」主推的賣點,該技術通過將DEX文件隱藏,並生成一個類似於虛像的殼文件,阻止黑客利用反編譯工具獲取App源碼。另外,愛加密http://www.ijiami.cn/推出了so庫保護,使得C/C++ 層面的代碼安全也得到防護。加上資源文件保護(圖片、音頻等文件的防查看和防修改)、xml 主配文件保護(對主配文件進行二次簽名)、內存保護等措施,可以基本保證App的動態和靜態安全。
D. 如何簡單修改Android的so文件
有的時候需要定製Android默認藍牙設備名稱,當然在我們有源碼的情況下自然是很好處理,但如果沒有源碼呢?這時候就需要修改so文件了。
藍牙默認設備名稱的修改在:
frameworks\base\core\jni\Android_bluetooth_common.h
主要就是修改BTMTK_ANDROID_DEFAULT_LOCAL_NAME的值
#define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"
查看相關mk文件可以知道,該文件最終編譯到了libandroid_runtime.so中,所以我們直接找到編譯好的libandroid_runtime.so
工具
WinHex
該工具是一款非常不錯的 16 進制編輯器,得到 ZDNetSoftwareLibrary 五星級最高評價,擁有強大的系統效用。
(PS:按F3查找下一個)
方法
將libandroid_runtime.so載入到WinHex中,然後全文搜索ANDROID BT,理論上只會有一處,當然也不能排除有多處,最終定位到代碼如下:
00684736 | 73 31 35 00 48 49 4B 65 20 37 31 36 00 5B 47 41 | s15 ANDROID BT
在WinHex中我們可以搜到僅有一處定義,因此直接修改為自己想定義的名稱,完成之後點擊保存,重新push到設備中,重啟設備即可生效