【android 逆向】破解crackme0502
阿新 • • 發佈:2022-03-18
1.首先將crackme0502 拖入模擬器。開啟應用,隨意輸出字串
2. 將APK 拖入AndroidKiller 反編譯
3.先檢視androidmanifest.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.droider.crackme0502"> <application android:debuggable="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name=".MyApp" android:theme="@style/AppTheme"> <activity android:label="@string/title_activity_main" android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
4. 直接定位到主頁面的MainActivity,檢視MainActivity.smali程式碼,發現有這樣一行程式碼
.line 40 iget-object v0, p0, Lcom/droider/crackme0502/MainActivity;->btnCheckSN:Landroid/widget/Button; new-instance v1, Lcom/droider/crackme0502/MainActivity$2; invoke-direct {v1, p0}, Lcom/droider/crackme0502/MainActivity$2;-><init>(Lcom/droider/crackme0502/MainActivity;)V invoke-virtual {v0, v1}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V
這裡建立了一個MainActivity$2
的物件,並作為引數傳入給了Button;->setOnClickListener
,所以這是一個點選的監聽內部類,進去看看它的onclick
方法
5. 搜尋toast彈出的字串: “註冊碼錯誤” ;首先要將其轉換成Unicode格式
6. 通過該Unicode定位
.line 45 .local v0, "checker":Lcom/droider/crackme0502/MainActivity$SNChecker; invoke-virtual {v0}, Lcom/droider/crackme0502/MainActivity$SNChecker;->isRegistered()Z move-result v2 if-eqz v2, :cond_0 const-string v1, "\u6ce8\u518c\u7801\u6b63\u786e" # 這裡是: “註冊碼正確”