① apk鍔犲滻鏄浠涔堟剰鎬濓紵
APK鍔犲滻鏄鎸囧瑰畨鍗撳簲鐢ㄧ▼搴忚繘琛屽姞瀵嗗拰淇濇姢錛屼互闃叉㈡伓鎰忔敾鍑誨拰鐮磋В銆傚姞鍥哄悗鐨凙PK鏂囦歡鏃犳硶琚鍙嶇紪璇戞垨鑰呭規槗鐮磋В錛屼粠鑰屼繚闅滆蔣浠剁殑瀹夊叏鎬у拰紼沖畾鎬с傚姞鍥鴻繃紼嬩腑鍖呮嫭鍔犲瘑浠g爜銆佸帇緙╂枃浠躲佹販娣嗙被鍚嶇瓑鎵嬫碉紝浠ユ彁楂樺弽緙栬瘧鍜岀牬瑙i毦搴︺侫PK鍔犲滻宸茬粡鎴愪負鐩鍓岮ndroid寮鍙戜腑鐨勫繀瑕佺幆鑺傦紝琚騫挎硾搴旂敤浜庡悇縐嶅簲鐢ㄧ▼搴忕殑寮鍙戝拰涓婄嚎銆
APK鍔犲滻鐨勮繍琛屽師鐞嗘槸浠涔堬紵
APK鍔犲滻鐨勪富瑕佸師鐞嗘槸閫氳繃灝咥PK紼嬪簭涓鐨勯噸瑕佹枃浠跺拰浠g爜榪涜屽姞瀵嗗拰娣鋒穯錛岄殣鈃忕▼搴忕殑鏍稿績鍐呭癸紝騫朵嬌鎮舵剰鏀誨嚮鑰呮棤娉曡交鏄撳湴榪涜屽垎鏋愬拰鍏ヤ鏡銆傚姞鍥鴻繃紼嬩腑錛岄栧厛灝咥PK紼嬪簭涓鐨勪唬鐮佽繘琛屽姞瀵嗗拰娣鋒穯錛岀劧鍚庡炲姞鐩稿叧鐨勪繚鎶ゆ満鍒跺拰閫昏緫鍒ゆ柇錛屼互杈懼埌鎻愰珮杞浠跺畨鍏ㄦу拰紼沖畾鎬х殑鐩鐨勩
APK鍔犲滻浼氬硅蔣浠剁殑鎬ц兘銆佽祫婧愭秷鑰楅犳垚褰卞搷鍚楋紵
鍔犲滻鍚庣殑APK鏂囦歡鍥犱負鍖呭惈浜嗗姞瀵嗗拰娣鋒穯鐨勪唬鐮佸拰鏂囦歡錛屽洜姝ょ浉杈冧簬鏈鍔犲滻鍓嶏紝鍏跺ぇ灝忎細澧炲姞錛屽畨瑁呭寘浣撶Н涔熶細鍙樺ぇ銆傛ゅ栵紝鍔犲滻鎿嶄綔涔熼渶瑕侀濆栫殑璁$畻璧勬簮鍜屾椂闂淬備絾涓鑸鎯呭喌涓嬶紝榪欎簺褰卞搷閮芥槸鍙浠ユ帴鍙楃殑錛岃屼笖鍔犲滻鍚庤蔣浠剁殑瀹夊叏鎬у拰紼沖畾鎬у彲浠ュ緱鍒版湁鏁堟彁楂樸傚洜姝わ紝寮鍙戣呴渶瑕佹牴鎹鍏蜂綋鐨勬儏鍐墊潵閫夋嫨鏄鍚﹂渶瑕佽繘琛孉PK鍔犲滻錛屼互鑾峰緱鏈浣崇殑寮鍙戝拰鍙戝竷鏁堟灉銆
② apk加固,apk加固怎麼可以防止反編譯,保護apk源代碼安全
apk源代碼可以加固的的,源代碼是加殼之後把重要的那部分代碼隱藏起來不被看到,在一定基礎上可以達到保護源代碼的目的。
③ 加固的apk,如何反編譯androidManifest.xml
工具:
鏈接: http://pan..com/s/1i4QpEAh 密碼:l6oq
首先配置好java的環境,在將apk重命名為*.zip,然後解壓zip文件,就可獲得AndroidManifest.xml文件,此時該文件無法打開,接下來就要用上面的AXMLPrinter2.jar工具。
命令為:java -jar AXMLPrinter2.jar AndroidManifest.xml > a.xml
④ 安卓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標,如果存在則修復,不存在刪除即可
⑤ 怎麼加固安卓軟體
加固安卓軟體一般要達到以下效果:
1、防逆向:通過DEX 文件加殼以及DEX 虛擬化等技術,防止代碼被反編譯和逆向分析。
2、防篡改:通過校驗 APK 開發者簽名,防止被二次打包,植入廣告或惡意代碼。
3、防調試:防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
VirboxProtector安卓加固的核心技術一般有:
DEX 文件加密隱藏
對 DEX 文件加殼保護,防止代碼被竊取和反編譯。
SO 區段壓縮加密
對 SO 庫中的代碼段和數據段壓縮並加密,防止被 IDA 等工具反編譯。
單步斷點檢測
在混淆的指令中插入軟斷點檢測暗樁,防止native層run trace和單步調試。
防動態調試
防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
開發者簽名校驗
對 APK 中的開發者簽名做啟動時校驗,防止被第三方破解和二次打包。
SO 內存完整性校驗
在 SO 庫載入時校驗內存完整性,防止第三方對 SO 庫打補丁。
SO 代碼混淆
對 SO 庫中指定的函數混淆,通過指令切片、控制流扁平化、立即加密等技術手段,將 native 指令轉換為難以理解的復雜指令,無法被 IDA 反編譯,並且無法被還原。
SO 代碼虛擬化
對 SO 庫中指定的函數虛擬化,可以將 x86、x64、arm32、arm64 架構的機器指令轉換為隨機自定義的虛擬機指令,安全強度極高,可通過工具自定義配置,調整性能與安全性。
DEX 虛擬機保護
對 DEX 中的 dalvik 位元組碼進行虛擬化,轉換為自定義的虛擬機指令,最後由 native 層虛擬機解釋執行,防止逆向分析。
⑥ 經過360加固的安卓程序該如何破解反編譯後什麼代碼都找不到
1)APKtool 2)dex2jar 3)jd-gui 4)簽名工具 相關技術的基本要求 1)具有一定的閱讀JAVA代碼的能力 2)稍微有點Android基礎,越多越好 3)會用eclipse的一些Android調試的相關工具 4)了解一下smali的語法規范和欄位的自定范圍 5)有點應變能力思想轉換能力、 6)雖然代碼的修改是修改其smali文件(用到smali語法),雖然其語言是非常復雜的,但是我們能夠變通就行了,但是要求了解一下smali的語法規范和欄位的自定范圍。 了解以上方法可以非常簡單破解Android APK,破解後,應用里的頁面布局、代碼邏輯、結構演算法等都能一目瞭然。所以為了避免被他人,尤其是競爭對手了解到這些,防破解和反編譯尤為重要。我試過代碼混淆,但是代碼混淆只是對類名進行了變換,增加了破解者的閱讀難度,並不能真正阻止反編譯工程。下面是進行過代碼混淆的APK代碼結構,能看到只是對類名做了變換,變成a、b、c等這樣的名稱。但是仍然可以進行反編譯。 後來又嘗試使用360加固保對APK進行加固保護,發現原有的代碼程序被隱藏起來了,沒法再進行反編譯工作。 所以作為移動應用開發者,適當了解一些破解和反編譯工作有利於保護自己的應用安全。如果不防患於未然,一旦出現盜版情況,那麼你的APP很可能從此被市場所拋棄。
⑦ app可以被反編譯到什麼程度
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
加固可以在一定程度上保護自己核心代碼演算法,提高破解/盜版/二次打包的難度,緩解代碼注入/動態調試/內存注入攻擊等。
目前市面上有很多第三方加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去掃描測試下。