⑴ 安卓逆向——如何修改APP包名實現應用分身
齊天大聖孫悟空是家喻戶曉的神話傳說名人,大家都知道他有一個很強大的技能——拿出一根猴毛「biu」一吹實現分身。
那麼我們程序猿也和咱們的齊天大聖是同類(開個玩笑),程序猿怎麼實現分身呢?我們拔一根頭發吹肯定是不好使的……那就是通過修改APP的包名來實現應用分身。也就是說在同一個設備上可以打開兩個或多個相同的APP。
一.如何修改APK的包名
那麼如何修改apk的包名呢?我們以「土豆視頻為例」來進行一個分析。首先,找到「工程管理器」,打開工程管理器進入界面,點開土豆視頻的下行文件數據
裡面有「manifest」這樣一個標簽,找到這個標簽裡面的一個「package」屬性,這個值就是我們要找到應用程序的包名
第二步,把「package」屬性改為「hou」或者「123」等等都可。
這個值我們可以通過刪減幾個字母或者是任意添加幾個字母或數字來進行修改,切記注意只能使用添加或刪減數字和字母,不可以用漢字!
建議通過「添加數字或字母實現」,刪除容易把握不準,當然刪除以後一定要記得保存。 然後點擊「回編譯」按鈕,進行回編譯過程
二.如何修改內容提供者
啟動模擬器,進行應用安裝,然後把我們「回編譯」好的拖到模擬器裡面
發現安裝失敗,提示「存在同名的內容提供者」。 錯誤的原因由於我們只修改了包名,沒有修改內容提供者。 那麼如何修改「內容提供者」?
搜索結束後顯示我們 需要修改的是「provider」裡面有個「android;anthorities」的值
修改的方法同修改「package」值的屬性是一樣的,可以添加或刪減字母或者是數字(絕對不能是漢字)
將搜索到的結果進行逐一全部修改,修改完成後千萬不能忘記保存
完成之後找到其所在的目錄進行安裝,方法同樣,直接拖進模擬器裡面即可
※這里補充一點:有的apk由於沒有內容提供者,就只需要一步到位——修改包名就可以直接實現應用分身了。
三.程序無法運行安裝及對應解決方案
那麼在什麼情況下會導致程序無法運行以及安裝,它們對應的解決方案是什麼呢?
Q 1 · 只修改apk的包名會引發內容提供者沖突
解決方案:
修改配置文件中所有內容提供者的標簽「provider」裡面「android:authorities」屬性的值
Q 2· 應用程序分身的簽名信息不同導致無法運行
解決方案:
使用相同的簽名工具對所有分身進行統一的簽名
Q 3· 有些apk在內部使用的包名只修改包名會導致程序崩潰
解決方案:
全局搜索應用程序的包名查看搜索結果,如果是字元串就進行一個替換,將原有的字元串修改為修改後的包名否則不進行替換
這就是如何修改apk的包名實現應用程序分身的具體方法了,在實際操作中可能會遇到更多的小細節問題,我們要具體問題具體分析。總之多動手多思考多實操,安卓逆向沒有什麼太難的。當然分享的相關經驗,如果有哪處不妥也歡迎在評論區回復討論或者私聊交流哈。
⑵ 如何系統的學習安卓逆向分析
首先,逆向分析是一門技術,也是一門藝術。
其次,安卓逆向同樣可細分為應用層APK逆向、安卓設備框架、內核驅動等逆向、基於安卓的硬體產品逆向等。此處假定樓主說的是第一種逆向。
應用層的逆向分析根據需求的不同,又可細分成APK流程逆向與功能逆向。
流程逆向通常是指簡單的對APK運行流程進行分析,此類分析通常可以使用將APK置於沙盒環境中運行捕捉並查看運行結果。這種逆向需求通常不是很多,典型的工種有殺軟廠商的病毒分析工程師。
功能逆向相比流程逆向則困難得多。但需求比較普遍。實際逆向分析過程中對功能實現的理解,在很大程度上取決於逆向人員相關的軟體開發知識。比如,分析Android程序的JAVA代碼就需要掌握基本的Android軟體開發的知識。分析so庫的代碼就需要了解C/C++相關的so庫開發的知識。除了基本開發相關的能力外,逆向分析人員還需要具備以下知識:
ARM/X86/MIPS匯編語言-分析so庫時可能需要閱讀大量的反匯編代碼。
常見逆向分析工具的使用-JDGUI/IDA PRO/APKTOOL/JEB/DEX2JAR
常用的安卓程序調試與反調試手段-調試器檢測與反檢測/脫殼/反混淆
常用的加密與解密演算法-好的逆向分析人員需要有快速識別常見加密解密演算法的能力
最後,就是多動手,多動手練習是掌握逆向分析技術最好的方法。
⑶ android逆向助手怎麼用Android逆向助手<br&
《android逆向視頻》網路網盤資源免費下載
鏈接:https://pan..com/s/1W1NAE-AeKbz0bb6E4mdXfA
⑷ 安卓逆向系列教程 4.10 玄奧八字
這次要破解的軟體是這個: http://www.xazhouyi.com/android/soft/bazi.html
首先分析其行為,打開軟體:
按照以往的經驗,程序有個欄位用於維護注冊狀態,我們可以通過字元串快速定位到它。我們將其載入 AK:
搜索「軟體未注冊」,在 string.xml 中找到:
然後在 public.xml 中找到,字元串的 ID 是 0x7f060003 。之後搜索這個數字。
我們在 main ,也就是入口的 MyInit 函數中找到了這個數值:
我們猜想 :cond_b 是失敗分支,我們往上找:
我們可以得出 ChkNumA/B/C 是三個關鍵判斷。下面的 if-eqz 是關鍵跳。成功各分支將 m_regFlag 設為 1,說明它是保存注冊狀態的欄位。
我們可以將這三個 if-eqz 都給注釋掉,但是我們可以採取另一種方式,在最後一個 if 的下面添加 :goto_100 標簽,然後在第一個 if 上面添加 goto :goto_100 。
重新打包、安裝軟體後,打開軟體,我們發現不再彈出注冊提示了。訪問菜單->更多->注冊之後,在注冊界面中我們可以看到「已注冊」。
⑸ 安卓逆向找誰學
國內如果是學習逆向的話首推武漢科銳,已經開了十多年了。其次的話是北京的15PB。
國內目前也就這兩家可以去學,但15PB的校長和老師也是武漢科銳畢業的,而且武漢是學一年北京是學半年,軟體逆向難度很大,半年未必能學到多少東西(除非你本身編程技術底子就很好,但這樣的話你自己自學也就夠了)所以個人看法是武漢科銳可能會好一些.
⑹ 求安卓app逆向破解工具和一般過程,純小白
首先,使用apktool工具進行反編譯,可以得到smali代碼文件,再定位找到主Activtiy的代碼,主Activity可以從AndroidManifest文件中查到。九天傳說的主Activity查到為com.tp.ttgame.jiutian.JiuTian。
圖2是處理com\tp\ttgame\jiutian\JiuTian.smali中的onCreate函數,向其中添加有米廣告的初始化代碼截圖