1

让SuperChm实现Call3具有一样的注册机制。首先得了解,一个Android程序由一个或多个Activity以及其他组件组成,每个Activity都是Android程序的一个展示“页面”,负责数据的处理和展示工作。并且每个Android程序有且仅有一个主Activity(隐藏程序没有主Activity)它是程序启动的第一个Activity。知道了这些,我们就看看Call3的第一个“页面”即是展示注册机制的Activity包含了哪些元素。

2

然后打开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;

3

VerifyActivity中各种的方法:1、在a()方法中有引用DESUtil.smali的encryptDES解密方法。

invoke-static {v0}, Lcom/call3/DESUtil;->encryptDES(Ljava/lang/String;)Ljava/lang/String;

4

注意:这里面也有启动主Activity

2、在onclick()方法中有一个资源ID:0x7f070014

:pswitch_data_0

.packed-switch 0x7f070014

:pswitch_0

:pswitch_1

.end packed-switch

5

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

6

对于DESUtil.smali,它又引用了Base64.smali文件中的encode方法:

invoke-static {v0}, Lcom/call3/Base64;->encode([B)Ljava/lang/String;

7

这样,答题的流程我们就知道了:首先在AndroidMainfest.xml中配置主Activity为VerifyActivity,然后导入layout布局文件activity_main.xml,同时还要引用DESUtil.smali和Base64.smali。同时要注意TelephonyManager有关权限的增加。

8

好了,我们开始动工吧开始操作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;

9

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;

10

0x7f070014->btn_verify的ID

0x7f030001->activity_verify的ID

0x7f070012->tv_imei的ID

0x7f070015->btn_close的ID

0x7f06007f->et_pwd的ID

11

这个Call3的注册机制还有一个好处就是注册成功以后,再打开就不再显示注册界面。

END

apk注册机加密_apk软件添加注册机方法 安卓apk添加授权教程相关推荐

  1. revit2018注册表删除_Revit软件的彻底卸载方法 注册表卸载

    Revit软件的彻底卸载方法 注册表卸载 Revit 软件的彻底卸载方法 注册表卸载由于卸载不当导致 Revit 软件无法再次安装的事件已经发生了太多了,在这里小 Z 将完全卸载Revit 软件的方法 ...

  2. revit2018注册表删除_Revit软件的彻底卸载方法 注册表卸载 定稿.docx

    PAGE PAGE 2 Revit软件的彻底卸载方法 注册表卸载 由于卸载不当导致Revit软件无法再次安装的事件已经发生了太多了,在这里小Z将完全卸载Revit软件的方法分享给大家,希望对那些由于卸 ...

  3. 加密保护软件 WinLicense 注册常见问题(一):许可证

    WinLicense具有和Themida同级别的保护功能以及授权管理功能.软件功能强大,使用灵活,开发者可以安全地发布软件的试用版和完全版. 接下来我整理的WinLicens问题集主要是在使用WinL ...

  4. 【FAQ】加密保护软件 WinLicense 注册常见问题解答(七)

    WinLicense具有和Themida同级别的保护功能以及授权管理功能.软件功能强大,使用灵活,开发者可以安全地发布软件的试用版和完全版. [下载WinLicense最新试用版] Q16:如何设置密 ...

  5. 加密保护软件 WinLicense 注册常见问题解答(三)

    WinLicense具有和Themida同级别的保护功能以及授权管理功能.软件功能强大,使用灵活,开发者可以安全地发布软件的试用版和完全版. 下载WinLicense最新试用版>>> ...

  6. 在线域名批量查询工具-未注册域名批量查询软件

    在线域名批量查询工具 在线域名批量查询工具是一种通过互联网进行批量查询域名相关信息和指标的工具.以下是其主要特点: 在线查询:在线域名批量查询工具可以直接在浏览器中进行查询,无需下载和安装任何软件. ...

  7. Focusky教程 | 软件免费注册登录

    Focusky动画演示大师(以下简称为"FS软件")也就是focusky官方中文版,免费注册登录,即可发布输出视频,.exe,网页,.app(苹果电脑离线本地浏览格式),*.zip ...

  8. wamp增加php,新版PHPWAMP自定义添加PHP版本方法步骤

    新版PHPWAMP自定义添加PHP版本方法步骤 发布时间:2020-05-08 10:19:50 来源:亿速云 阅读:210 作者:三月 本文主要给大家介绍新版PHPWAMP自定义添加PHP版本方法步 ...

  9. Fabric.js添加辅助线的方法

    Fabric.js高级点的教程1–添加辅助线的方法 Fabric.js添加辅助线的方法 Fabric.js 非常的强大,但是国内的资源教程很少,最近想加个功能给元素添加辅助参考线(类似 演示 ).这样 ...

  10. 【17】有关python面向对象编程的提高【多继承、多态、类属性、动态添加与限制添加属性与方法、@property】...

    一.多继承 案例1:小孩继承自爸爸,妈妈.在程序入口模块再创建实例调用执行 #father模块 class Father(object):def __init__(self,money):self.m ...

最新文章

  1. SQL*PLUS常用命令
  2. Android Contact数据模型之EntityDelta(二)
  3. USTC English Club Note20171016(2)
  4. 为什么 头条 宇宙条_“当宇宙行遭遇黑洞……“【59期省联社微信传播力榜单】...
  5. python删除mysql数据库_python 删除mysql数据库
  6. 【视频】视频文件格式和视频编码
  7. 使用C#客户端访问FTP服务的一个解决方案
  8. linux .bashrc文件修改和生效
  9. linux笔记:shell编程-正则表达式
  10. 春晚魔术,醉翁之意不在酒
  11. iOS Swift 绘制PDF,超长字符串分页绘制
  12. slackware下ibus编译安装(更新:2010/10/17)
  13. 北大2011年计算机系录取浙江毛,湖州这11位同学被清华北大录取!
  14. 转运锦鲤(Transport of Koi Carp)
  15. 【SEED Labs 2.0】Packet Sniffing and Spoofing Lab
  16. 利用arcgis进行excel数据的空间相关性分析
  17. 动态效果网页HTML+CSS+JS
  18. mac删除global protect
  19. JadePool应用范例:实现中国行政区划管理
  20. 干货|可视化设计:百度地图路线

热门文章

  1. 如何用Python的标准print函数打印一个彩色的围棋局面?
  2. ubuntu ftp 服务的使用
  3. 水经注地图发布服务中间件管理界面
  4. intptr java_[转载]C#中int和IntPtr相互转换
  5. (已实现)Mysql实现模糊拼音查询(Mybatis可直接使用)
  6. Spring常用注解
  7. Apabi Reader-强大的免费pdf文档阅读器(方正出品)
  8. 浙大计算机考研分数线2016,2016浙江大学考研复试分数线
  9. 根据WSDL文件生成JAVA代码
  10. 从零教新手开始学做游戏辅助系列(一)