Android app逆向---從入門到放棄


實驗環境

Win10、Android killer1.3.1、APKIDE

  1. 反編譯apk。

 

可能會卡在正在反編譯源碼,請稍后…… 解決方法是重新打開軟件然后雙擊APK歷史工程里面要打開的這個apk即可。

 

  1. 找到在MainActivity.smali中找到check方法 如果用戶名或者密碼有一個不對就會跳轉到:cond_0出 然后執行下面的代碼 也就是登陸失敗!

 

 

 

用鼠標點擊cond_0就能找到:cond_0位置 這個地方就是登陸失敗

 

  1. 補充兩個smali指令 一個是if-eqz 另一個是if-nez 這兩條指令是相對的
    (1)if-eqz vA, vB, :cond_**"   如果vA等於vB則跳轉到:cond_**
    (2)if-nez vA, vB, :cond_**"   如果vA不等於vB則跳轉到:cond_**
  2. 小總結

(1)     首先程序把我們輸入的用戶名和密碼給了p1和p2 然后把真正的用戶名給了v0 再拿p1和v0對比 對比的結果放在v0中 如果這兩個值不相等v0就等於0

(2)     然后用if-eqz v0, :cond_0這條指令去判斷v0是不是0 如果v0等於0  也就是用戶名和密碼不相等 就跳轉到:cond_0位置 執行登錄失敗 否則繼續往下面執行

(3)     這里假設用戶名輸入正確了 程序往下繼續執行 后面會進行同樣的判斷密碼是不是相等 只有用戶名和密碼都是正確的 程序才不會跳轉到:cond_0位置執行登錄失敗。

  1. 結合上面的分析,如果不讓程序跳轉到:cond_0位置 讓程序每次在if-eqz v0, :cond_0這條關鍵指令上繼續往下執行 是不是就可以執行登錄成功代碼了?  那怎么能讓它不跳轉呢?我們可以有三種思路:

(1)     程序有兩個if-eqz 分別是用來判斷用戶名和密碼是否正確的 我把這兩個if-eqz都改成if-nez 

(2)     直接把這兩條指令刪除掉

(3)     直接用goto語句直接一條指令讓程序執行跳轉登錄成的代碼 也是可以達到程序破解的目的.

 

自己添加goto語句

 

上面是1和3的操作方法,修改完了之后保存一下,然后編譯成APK,安裝到手機或者模擬器上測試是否成功。

原文鏈接:https://www.52pojie.cn/thread-650395-1-1.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM