前言

我们知道借助apktool对apk的反编译几乎是无损源码级别的,所以要想在无源码的情况下,让某个软件实现想要的显示或者功能,只需要先写个简单的具有该显示和功能的DEMO,然后将关键的代码镶嵌到目标的软件即可。相信,一些简单的添加AlertDialog、Toast等大家都会。今天,我就带大家一起为一个小程序添加注册机制。

准备

DEMO:追魂Call3
对象:SuperChm
目的:让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;-><init>(Landroid/content/Context;Ljava/lang/Class;)Vinvoke-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有关权限的增加。

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.CALL_PHONE"/><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

好了,我们开始动工吧。

开始操作

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的注册机制还有一个好处就是注册成功以后,再打开就不再显示注册界面。

相关下载

包括追魂Call3、注册机、SuperChm、SuperChm_Verfiried

下载地址:链接: http://pan.baidu.com/s/1mgBjJhY 密码: ffyk

Android逆向移花接木之添加注册机制相关推荐

  1. Android逆向移花接木之添加AlertDialog

    前言 有时候我们破解一款软件,为了表明是自己修改的作品或者说明一些使用应注意的事项,一般会在程序开启时,自定义添加点东西,比如常见的Splash.Toast,不带按钮的Alertdialog等,今天我 ...

  2. 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )

    文章目录 一.CPU 高速缓存机制 二.CPU 高速缓存机制 导致 函数拦截失败 一.CPU 高速缓存机制 CPU 架构模型中 , 指令 在开始时 , 存放在内存中 , 如 : /proc/pid/m ...

  3. 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )

    文章目录 一.通过修改 GOT 全局偏移表拦截函数 二.通过在实际被调用的函数中添加跳转代码实现函数拦截 一.通过修改 GOT 全局偏移表拦截函数 使用 GOT 全局偏移表 拦截函数 , 只需要将 G ...

  4. Android 插件化原理学习 —— Hook 机制之动态代理

    前言 为了实现 App 的快速迭代更新,基于 H5 Hybrid 的解决方案有很多,由于 webview 本身的性能问题,也随之出现了很多基于 JS 引擎实现的原生渲染的方案,例如 React Nat ...

  5. Android逆向与病毒分析

    本文由同程旅游安全团队对内移动安全培训的PPT整理而来,面向对象为对移动安全感兴趣的研发同事,所以讲的有些宽泛.介绍了入门Android逆向需要掌握的一些知识点, 通过简单的几个案例讲解Android ...

  6. Android逆向-实战sign分析-某某合伙人_v4.0.9

    1.基础分析 1.1.基础分析 工作中经常会对一些app进行安全审计,一般在拿到应用后可以使用APK Helper工具对应用做个简单分析,了解目标的包名,版本号,名称等基础信息,之后再安装到手机上熟悉 ...

  7. Android逆向前期准备

    本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正 <Android软件安全与逆向分析>丰生强 < Android应用安全防护和逆向分析>姜维 ...

  8. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder ...

  9. Android 插件化原理解析——Hook机制之AMSPMS

    在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook:插件框架通过AOP实现了插件使用和开发的透明性.在讲述DroidPlugin如何实现四大组件的插件 ...

最新文章

  1. ---Pcie基本概念普及(扫盲篇--巨适合新手)
  2. [基础|理论|实验]linux下的文件读写
  3. R统计笔记(四):中括号与双中括号的差异
  4. 【遇到问题】ORA-27102 ORA-01034
  5. There is insufficient system memory to run this query 错误
  6. Acwing 1085. 不要62
  7. python中的元组操作
  8. leetcode - 统计封闭岛屿的数目
  9. 代码不是艺术,是现实的表现
  10. 使用javascript在客户端获取URL参数值的函数
  11. 区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连
  12. java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
  13. java 修改mysql密码_mysql数据库忘记密码时如何修改
  14. Python3 发票导出XML转Excel
  15. 一款开源且超好用的网站克隆机 HTTrack
  16. agd插值算法_插值算法(一):各种插值方法比较
  17. [转载]在Java应用程序中访问USB设备
  18. C简单动态规划——爬数塔
  19. DNS_PROBE_FINISHED_NXDOMAIN错误的解决方法
  20. 【剑指offer刷题】排序算法

热门文章

  1. 06_02_任务三:Spring JDBCTemplate 声明式事务
  2. ikanalyer java_中文分词之Java实现使用IK Analyzer实现
  3. %3A%2F%2F这样的叫什么码啊?
  4. 智慧物业管理系统(Springboot)
  5. 【项目精选】智慧物业管理系统
  6. java计算机毕业设计智慧物业管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  7. 外虚内实是什么意思_中医讲的虚与实是什么意思
  8. USB开发-----实现USB Audio 带Feedback端点,录音播放
  9. New Online Judge 1014
  10. Mathtype——输入空格的方法