讓SuperChm實現Call3具有一樣的註冊機制。首先得了解,一個Android程式由一個或多個Activity以及其他元件組成,每個Activity都是Android程式的一個展示“頁面”,負責資料的處理和展示工作。並且每個Android程式有且僅有一個主Activity(隱藏程式沒有主Activity)它是程式啟動的第一個Activity。知道了這些,我們就看看Call3的第一個“頁面”即是展示註冊機制的Activity包含了哪些元素。
然後開啟Call3的VerifyActivity.smali,其instance fields已經顯示出所引用的元件:
.field private a:Landroid/widget/Button;
.field private b:Landroid/widget/Button;
//一個瀏覽文字
.field private c:Landroid/widget/TextView;
//一個編輯框
.field private d:Landroid/widget/EditText;
//驗證註冊的本地SharedPreferences
.field private e:Landroid/content/SharedPreferences;
//獲取手機通訊狀態相關的方法,這個會涉及到系統許可權
.field private f:Landroid/telephony/TelephonyManager;
//提示框
.field private g:Landroid/app/ProgressDialog;
VerifyActivity中各種的方法:1、在a()方法中有引用DESUtil.smali的encryptDES解密方法。
invoke-static {v0}, Lcom/call3/DESUtil;->encryptDES(Ljava/lang/String;)Ljava/lang/String;
注意:這裡面也有啟動主Activity
2、在onclick()方法中有一個資源ID:0x7f070014
:pswitch_data_0
.packed-switch 0x7f070014
:pswitch_0
:pswitch_1
.end packed-switch
3、在onCreate()方法中資源ID有:0x7f030001、0x7f070012、0x7f070014、0x7f070015、0x7f070013。還有一個啟動主功能MainActivity
new-instance v0, Landroid/content/Intent;
const-class v1, Lcom/call3/MainActivity;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;->
(Landroid/content/Context;Ljava/lang/Class;)V
invoke-virtual {p0, v0}, Lcom/call3/VerifyActivity;->startActivity(Landroid/content/Intent;)V
對於DESUtil.smali,它又引用了Base64.smali檔案中的encode方法:
invoke-static {v0}, Lcom/call3/Base64;->encode([B)Ljava/lang/String;
這樣,答題的流程我們就知道了:首先在AndroidMainfest.xml中配置主Activity為VerifyActivity,然後匯入layout佈局檔案activity_main.xml,同時還要引用DESUtil.smali和Base64.smali。同時要注意TelephonyManager有關許可權的增加。
好了,我們開始操作:
1、將SuperChm程式的主Activity修改為VerifyActivity,原主Activity變為一般2、在原主Activity的資料夾下匯入:VerifyActivity.smali、DESUtil.smali和Base64.smali。在layout佈局資料夾下,匯入activity_verify.xml。
3、將VerifyActivity.smali、DESUtil.smali、Base64.smali檔案中的“Lcom/call3/”全部替換成“Lcom/jrzheng/superchm/Activity/”。更改VerifyActivity.smali中啟動的主Activity,即:
改為:
const-class v1, Lcom/jrzheng/superchm/Activity/MainActivity;
4、開始最艱辛的一個過程,設定資源ID。自行對比吧。
新增color:colors.xml、public.xml、R$color.smali;
新增“btn_verify”:ids.xml、public.xml&id、R$id;
新增“activity_verify”:public.xml&layout、R$layout;
新增“tv_imei”:ids.xml、public.xml&id、R$id;
新增“btn_close”:ids.xml、public.xml&id、R$id;
新增“et_pwd”:ids.xml、public.xml&id、R$id;
新增“tv_title”,ids.xml、public.xml&id、R$id;
0x7f070014->btn_verify的ID
0x7f030001->activity_verify的ID
0x7f070012->tv_imei的ID
0x7f070015->btn_close的ID
0x7f06007f->et_pwd的ID
這個Call3的註冊機制還有一個好處就是註冊成功以後,再開啟就不再顯示註冊介面。
讓SuperChm實現Call3具有一樣的註冊機制。首先得了解,一個Android程式由一個或多個Activity以及其他元件組成,每個Activity都是Android程式的一個展示“頁面”,負責資料的處理和展示工作。並且每個Android程式有且僅有一個主Activity(隱藏程式沒有主Activity)它是程式啟動的第一個Activity。知道了這些,我們就看看Call3的第一個“頁面”即是展示註冊機制的Activity包含了哪些元素。
然後開啟Call3的VerifyActivity.smali,其instance fields已經顯示出所引用的元件:
.field private a:Landroid/widget/Button;
.field private b:Landroid/widget/Button;
//一個瀏覽文字
.field private c:Landroid/widget/TextView;
//一個編輯框
.field private d:Landroid/widget/EditText;
//驗證註冊的本地SharedPreferences
.field private e:Landroid/content/SharedPreferences;
//獲取手機通訊狀態相關的方法,這個會涉及到系統許可權
.field private f:Landroid/telephony/TelephonyManager;
//提示框
.field private g:Landroid/app/ProgressDialog;
VerifyActivity中各種的方法:1、在a()方法中有引用DESUtil.smali的encryptDES解密方法。
invoke-static {v0}, Lcom/call3/DESUtil;->encryptDES(Ljava/lang/String;)Ljava/lang/String;
注意:這裡面也有啟動主Activity
2、在onclick()方法中有一個資源ID:0x7f070014
:pswitch_data_0
.packed-switch 0x7f070014
:pswitch_0
:pswitch_1
.end packed-switch
3、在onCreate()方法中資源ID有:0x7f030001、0x7f070012、0x7f070014、0x7f070015、0x7f070013。還有一個啟動主功能MainActivity
new-instance v0, Landroid/content/Intent;
const-class v1, Lcom/call3/MainActivity;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;->
(Landroid/content/Context;Ljava/lang/Class;)V
invoke-virtual {p0, v0}, Lcom/call3/VerifyActivity;->startActivity(Landroid/content/Intent;)V
對於DESUtil.smali,它又引用了Base64.smali檔案中的encode方法:
invoke-static {v0}, Lcom/call3/Base64;->encode([B)Ljava/lang/String;
這樣,答題的流程我們就知道了:首先在AndroidMainfest.xml中配置主Activity為VerifyActivity,然後匯入layout佈局檔案activity_main.xml,同時還要引用DESUtil.smali和Base64.smali。同時要注意TelephonyManager有關許可權的增加。
好了,我們開始操作:
1、將SuperChm程式的主Activity修改為VerifyActivity,原主Activity變為一般2、在原主Activity的資料夾下匯入:VerifyActivity.smali、DESUtil.smali和Base64.smali。在layout佈局資料夾下,匯入activity_verify.xml。
3、將VerifyActivity.smali、DESUtil.smali、Base64.smali檔案中的“Lcom/call3/”全部替換成“Lcom/jrzheng/superchm/Activity/”。更改VerifyActivity.smali中啟動的主Activity,即:
const-class v1, Lcom/call3/MainActivity;
改為:
const-class v1, Lcom/jrzheng/superchm/Activity/MainActivity;
4、開始最艱辛的一個過程,設定資源ID。自行對比吧。
新增color:colors.xml、public.xml、R$color.smali;
新增“btn_verify”:ids.xml、public.xml&id、R$id;
新增“activity_verify”:public.xml&layout、R$layout;
新增“tv_imei”:ids.xml、public.xml&id、R$id;
新增“btn_close”:ids.xml、public.xml&id、R$id;
新增“et_pwd”:ids.xml、public.xml&id、R$id;
新增“tv_title”,ids.xml、public.xml&id、R$id;
0x7f070014->btn_verify的ID
0x7f030001->activity_verify的ID
0x7f070012->tv_imei的ID
0x7f070015->btn_close的ID
0x7f06007f->et_pwd的ID
這個Call3的註冊機制還有一個好處就是註冊成功以後,再開啟就不再顯示註冊介面。