① APK 反編譯失敗 是為啥
1、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。
3、出錯問題1
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
這些小小的錯誤都會導致回編時譯檢查出錯。
所以漢化時,注意對校,然後再回編譯。
建議使用一些高級的文本編輯器,支持語法高亮視圖的。
4、出錯問題2
最近發現有些APK文件 反編譯後,就算不漢化直接回編譯,都會出錯。
有可能的原因1,反編譯後XML文件語法中@符號 前面多了"\" (\@ ),
用文本編輯工具 直接替換【\@】為【@】,應該可以解決。
建議使用最新版本的反編譯工具。
5、建議大家使用新版本的APKTool工具,
當然如果新的有問題也可以試試舊的一、系統文件漢化再次強調
1、漢化Settings.apk(系統設置)、MMS.apk(信息)、Phone.apk(電話)、
等等系統文件,一定要先 安裝構架,具體看另個文件
<關於APKTool工具反編譯Settings.apk問題>。
2、系統文件漢化完後不需要簽名,直接替換漢化後的文件,就可以了。
主要是,系統文件放在系統目錄,無需再次讀取簽名獲得許可權,已經是高級了。
二、打包說明
1、通常漢化完回編譯後,會自動生成所有APK內的文件,或者自動生成*.APK文件。
但是建議大家不要直接使用該文件,進了使用替換法,替換掉你漢化後的文件,
如:resources.arsc,如果修改過的圖片,等等…
2、很多人對於APK文件 解壓縮或壓縮 都用「WinRAR」或「好壓」,這里不推薦。
希望大家安裝7-Zip這個壓縮工具,對於zip格式的支持是最好的。而且很方便,
不需要重新關聯apk 直接右鍵打開就行了。替換直接拖拉進去,就OK了一、回編譯出錯問題
(1.提示 strings.xml 最後一行錯誤,檢查是否</string>符號錯誤;
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
(2.提示 strings.xml 最頂部含中文代碼首行錯誤,編碼格式不對,轉換成 UTF-8;
(3.提示 public.xml 出錯,檢查改動過的 arrays.xml 是否代碼有錯誤的地方;
二、一切能正常但無法回編譯
還有一種情況,apktool最新版本能正常反編譯一個apk文件,在未做任何修改的情況下,無法回編譯。
這是就要注意了,可以嘗試一下用低版本的apktool進行【反編譯】,然後在用高版本的apktoo工具【回編譯】。
這里向大家推薦用 【APKDB】 這個工具,很方便,反編譯時可以選擇apktool的版本。
② apk改之理反編譯修改ip後,安裝完成閃退
編譯出現錯誤,網路卡頓。
1、apk改之理反編譯修改ip後,編譯出現錯誤就會出現安裝完成閃退的情況,需要進行改正。
2、網路問題出現不穩定就會導致該種情況的出現,更換相對穩定的網路即可。
③ 手機app常見的漏洞有哪些
首先,說到APP的安全漏洞,如果拋開安卓自身開源的問題的話,其主要產生的原因就是開發過程中疏忽或者代碼不嚴謹引起的。但這些責任也不能怪在程序猿頭上,有時會因為BOSS時間催得緊等很多可觀原因。那麼,手機app常見的漏洞有哪些
呢
1.應用反編譯
漏洞:APK 包非常容易被反編譯成可讀文件,稍加修改就能重新打包成新的 APK。
利用:軟體破解,內購破解,軟體邏輯修改,插入惡意代碼,替換廣告商 ID。
建議:使用 ProGuard 等工具混淆代碼,重要邏輯用 NDK 實現。
例子:反編譯重打包 FlappyBird,把廣告商 ID 換了,游戲改加插一段惡意代碼等等。
2.數據的存儲與傳輸
漏洞:外部存儲(SD 卡)上的文件沒有許可權管理,所有應用都可讀可寫。開發者把敏感信息明文存在 SD 卡上,或者動態載入的 payload 放在 SD 卡上。
利用:竊取敏感信息,篡改配置文件,修改 payload 邏輯並重打包。
建議:不要把敏感信息放在外部存儲上面;在動態載入外部資源的時候驗證文件完整性。
漏洞:使用全局可讀寫(MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE)的內部存儲方式,或明文存儲敏感信息(用戶賬號密碼等)。
利用:全局讀寫敏感信息,或 root 後讀取明文信息。
建議:不適用全局可讀寫的內部存儲方式,不明文存儲用戶賬號密碼。
3.密碼泄露
漏洞:密碼明文存儲,傳輸。
利用:
root 後可讀寫內部存儲。
SD 卡全局可讀寫。
公共 WiFi 抓包獲取賬號密碼。
建議:實用成熟的加密方案。不要把密碼明文存儲在 SD 卡上。
4.組件暴露(Activity, Service, Broadcast Receiver, Content Provider)
漏洞:
組件在被調用時未做驗證。
在調用其他組件時未做驗證。
利用:
調用暴露的組件,達到某種效果,獲取某些信息,構造某些數據。(比如:調用暴露的組件發簡訊、微博等)。
監聽暴露組件,讀取數據。
建議:驗證輸入信息、驗證組件調用等。android:exported 設置為 false。使用 android:protectionLevel="signature" 驗證調用來源。
5. WebView
漏洞:
惡意 App 可以注入 JavaScript 代碼進入 WebView 中的網頁,網頁未作驗證。
惡意網頁可以執行 JavaScript 反過來調用 App 中注冊過的方法,或者使用資源。
利用:
惡意程序嵌入 Web App,然後竊取用戶信息。
惡意網頁遠程調用 App 代碼。更有甚者,通過 Java Reflection 調用 Runtime 執行任意代碼。
建議:不使用 WebView 中的 setJavaScriptEnabled(true),或者使用時對輸入進行驗證。
6.其他漏洞
ROOT 後的手機可以修改 App 的內購,或者安裝外掛 App 等。
Logcat 泄露用戶敏感信息。
惡意的廣告包。
利用 next Intent。
7.總結
APP的漏洞大部分都是因為開發人員沒有對輸入信息做驗證造成的,另外因為 Intent 這種特殊的機制,需要過濾外部的各種惡意行為。再加上安卓應用市場混亂,開發人員水平參差不齊。所以現在 Android 應用的漏洞,惡意軟體,釣魚等還在不斷增多。
再加上 root 對於 App 沙箱的破壞,Android 升級的限制。國內的安卓環境一片混亂,慘不忍睹。所以,裕祥安全網提醒大家如果想要保證你的應用沒有安全漏洞,就要記住:永遠不要相信外面的世界。
更多通訊安全小知識
,比如手機下載網路資源需注意哪些危險隱患
,歡迎繼續閱讀裕祥安全網
。