安卓逆向系列教程 4.10 玄奧八字

4.10 玄奧八字

作者:飛龍

聲明:本人極度厭惡玄學,選取此軟件是為了研究逆向技術(shù),并不代表本人贊成其內(nèi)容。

這次要破解的軟件是這個:http://www.xazhouyi.com/android/soft/bazi.html

首先分析其行為,打開軟件:

按照以往的經(jīng)驗,程序有個字段用于維護注冊狀態(tài),我們可以通過字符串快速定位到它。我們將其載入 AK:

搜索“軟件未注冊”,在string.xml中找到:

<string name="Id_StartInfo">"注意事項
1:軟件未注冊只能使用1999年的,注冊后可使用所有功能。
2:注冊方法請看軟件菜單“幫助->軟件幫助”。
3:注冊時需提供軟件系列號,軟件系列號--點擊菜單“幫助->注冊”可看到。
...
</string>

然后在public.xml中找到,字符串的 ID 是0x7f060003。之后搜索這個數(shù)字。

我們在main,也就是入口的MyInit函數(shù)中找到了這個數(shù)值:

:cond_b
# 玄奧八字7.2未注冊!
const-string v7, "\u7384\u5965\u516b\u5b577.2\u672a\u6ce8\u518c\uff01"

invoke-virtual {p0, v7}, LMy/XuanAo/BaZiYi/main;->setTitle(Ljava/lang/CharSequence;)V

.line 199
invoke-virtual {p0}, LMy/XuanAo/BaZiYi/main;->getResources()Landroid/content/res/Resources;

move-result-object v7

const v8, 0x7f060003

invoke-virtual {v7, v8}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

# 剛才的字符串
move-result-object v7

invoke-static {p0, v7, v10}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

move-result-object v7

invoke-virtual {v7}, Landroid/widget/Toast;->show()V

goto :goto_4 # return-void

我們猜想:cond_b是失敗分支,我們往上找:

sget-object v7, LMy/XuanAo/BaZiYi/main;->m_chkSoft:LMy/XuanAo/BaZiYi/CSoftReg;

invoke-virtual {v7}, LMy/XuanAo/BaZiYi/CSoftReg;->ChkNumA()Z

move-result v7

if-eqz v7, :cond_b

sget-object v7, LMy/XuanAo/BaZiYi/main;->m_chkSoft:LMy/XuanAo/BaZiYi/CSoftReg;

invoke-virtual {v7}, LMy/XuanAo/BaZiYi/CSoftReg;->ChkNumB()Z

move-result v7

if-eqz v7, :cond_b

sget-object v7, LMy/XuanAo/BaZiYi/main;->m_chkSoft:LMy/XuanAo/BaZiYi/CSoftReg;

invoke-virtual {v7}, LMy/XuanAo/BaZiYi/CSoftReg;->ChkNumC()Z

move-result v7

if-eqz v7, :cond_b # 關鍵跳

# 成功分支

.line 195
const-string v7, "\u7384\u5965\u516b\u5b577.2"

invoke-virtual {p0, v7}, LMy/XuanAo/BaZiYi/main;->setTitle(Ljava/lang/CharSequence;)V

.line 196
# const/4 v10, 0x1
sput-boolean v10, LMy/XuanAo/BaZiYi/main;->m_regFlag:Z

我們可以得出ChkNumA/B/C是三個關鍵判斷。下面的if-eqz是關鍵跳。成功各分支將m_regFlag設為 1,說明它是保存注冊狀態(tài)的字段。

我們可以將這三個if-eqz都給注釋掉,但是我們可以采取另一種方式,在最后一個if的下面添加:goto_100標簽,然后在第一個if上面添加goto :goto_100。

.line 193
:cond_1
goto :goto_100
sget-object v7, LMy/XuanAo/BaZiYi/main;->m_chkSoft:LMy/XuanAo/BaZiYi/CSoftReg;

# ...

if-eqz v7, :cond_b
:goto_100

重新打包、安裝軟件后,打開軟件,我們發(fā)現(xiàn)不再彈出注冊提示了。訪問菜單->更多->注冊之后,在注冊界面中我們可以看到“已注冊”。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,975評論 0 11
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,633評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評論 19 139
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,995評論 0 11
  • 這是一個心之所向之人帶給我的感悟。獨立人格與道德約束之間的矛盾。 依稀記得大學時期與鄧論老師辯論什么是自由。我甚...
    最光陰大人閱讀 1,253評論 0 1

友情鏈接更多精彩內(nèi)容