Android逆向移花接木之添加注册机制
前言
我们知道借助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逆向移花接木之添加注册机制相关推荐
- Android逆向移花接木之添加AlertDialog
前言 有时候我们破解一款软件,为了表明是自己修改的作品或者说明一些使用应注意的事项,一般会在程序开启时,自定义添加点东西,比如常见的Splash.Toast,不带按钮的Alertdialog等,今天我 ...
- 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )
文章目录 一.CPU 高速缓存机制 二.CPU 高速缓存机制 导致 函数拦截失败 一.CPU 高速缓存机制 CPU 架构模型中 , 指令 在开始时 , 存放在内存中 , 如 : /proc/pid/m ...
- 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )
文章目录 一.通过修改 GOT 全局偏移表拦截函数 二.通过在实际被调用的函数中添加跳转代码实现函数拦截 一.通过修改 GOT 全局偏移表拦截函数 使用 GOT 全局偏移表 拦截函数 , 只需要将 G ...
- Android 插件化原理学习 —— Hook 机制之动态代理
前言 为了实现 App 的快速迭代更新,基于 H5 Hybrid 的解决方案有很多,由于 webview 本身的性能问题,也随之出现了很多基于 JS 引擎实现的原生渲染的方案,例如 React Nat ...
- Android逆向与病毒分析
本文由同程旅游安全团队对内移动安全培训的PPT整理而来,面向对象为对移动安全感兴趣的研发同事,所以讲的有些宽泛.介绍了入门Android逆向需要掌握的一些知识点, 通过简单的几个案例讲解Android ...
- Android逆向-实战sign分析-某某合伙人_v4.0.9
1.基础分析 1.1.基础分析 工作中经常会对一些app进行安全审计,一般在拿到应用后可以使用APK Helper工具对应用做个简单分析,了解目标的包名,版本号,名称等基础信息,之后再安装到手机上熟悉 ...
- Android逆向前期准备
本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正 <Android软件安全与逆向分析>丰生强 < Android应用安全防护和逆向分析>姜维 ...
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
原文地址: http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder ...
- Android 插件化原理解析——Hook机制之AMSPMS
在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook:插件框架通过AOP实现了插件使用和开发的透明性.在讲述DroidPlugin如何实现四大组件的插件 ...
最新文章
- ---Pcie基本概念普及(扫盲篇--巨适合新手)
- [基础|理论|实验]linux下的文件读写
- R统计笔记(四):中括号与双中括号的差异
- 【遇到问题】ORA-27102 ORA-01034
- There is insufficient system memory to run this query 错误
- Acwing 1085. 不要62
- python中的元组操作
- leetcode - 统计封闭岛屿的数目
- 代码不是艺术,是现实的表现
- 使用javascript在客户端获取URL参数值的函数
- 区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连
- java怎么设计一个系统吗_谁能帮我设计一个Java的文件管理系统谢谢各位
- java 修改mysql密码_mysql数据库忘记密码时如何修改
- Python3 发票导出XML转Excel
- 一款开源且超好用的网站克隆机 HTTrack
- agd插值算法_插值算法(一):各种插值方法比较
- [转载]在Java应用程序中访问USB设备
- C简单动态规划——爬数塔
- DNS_PROBE_FINISHED_NXDOMAIN错误的解决方法
- 【剑指offer刷题】排序算法
热门文章
- 06_02_任务三:Spring JDBCTemplate 声明式事务
- ikanalyer java_中文分词之Java实现使用IK Analyzer实现
- %3A%2F%2F这样的叫什么码啊?
- 智慧物业管理系统(Springboot)
- 【项目精选】智慧物业管理系统
- java计算机毕业设计智慧物业管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- 外虚内实是什么意思_中医讲的虚与实是什么意思
- USB开发-----实现USB Audio 带Feedback端点,录音播放
- New Online Judge 1014
- Mathtype——输入空格的方法