浅谈微信smali注入

作者:郭少雷

搞android搞了几年也没搞出个啥牛逼app出来,眼看时下最火的app微信如此火热,实在想搞搞它,索性就想着给它加点东西进去。

以下内容纯属本人个人爱好,仅限个人学习android用途以及对android的深入了解。

首先我们得想一想加点什么东西在微信里面,这里简单做个体验,加一个推送sdk至微信最新(6.5.7)apk包中,并由服务端控制向其推送消息。以下步骤依次讲解加入流程

1.申请推送平台

这里以个推为例并下载Getui_SDK;新建一Android Studio工程,包名同微信包名保持一致(com.tencent.mm),新建一PushActivity用于获取启动个推SDK的smali代码片段。依据个推sdk创建相应DemoIntentService和DemoPushService;

这里写图片描述


2.获取资源文件

生成工程apk后使用ApkTool反编译生成好的apk后得到以下smali代码及资源文件。反编译apk文件
命令:

    apktool d <file.apk> <dir>
 得到所有资源及代码文件。 

这里写图片描述

进入smali目录获取到PushActivity.smali中启动个推代码片段:

这里写图片描述


3.反编译

使用ApkTool反编译微信apk得到微信资源及smali代码:

这里写图片描述


4.定位onCreate方法

查看微信资源AndroidManifext.xml中启动Launcher的Activity为LauncherUI,打开LauncherUI.smali文件并找到onCreate方法:

这里写图片描述

在该方法最后加入启动个推smali代码,并将PushActivity改为Launcher所在位置后保存:

这里写图片描述


5.加入个推服务

保存个推用到的资源文件到微信目录后修改微信AndroidManifest.xml加入个推服务:

这里写图片描述


6.回编apk文件

命令:

apktool b <dir>
使用apk回编命令对微信资源目录进行回编后得到新的微信apk;安装启动后即可由个推服务端对客户端进行Push消息推送。

这里写图片描述

转载于:https://www.cnblogs.com/wangyaning/p/7853871.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1使用Kubernetes系列(四):搭建第一个应用程序

上一篇文章《从0到1使用Kubernetes系列&#xff08;三&#xff09;&#xff1a;使用Ansible安装Kubernetes集群》中&#xff0c;我们搭建了一套Kubernetes集群&#xff0c;接下来将在本文中介绍如何使用Kubernetes部署一个Nginx并通过Pod IP、Service IP、Ingress这三种方式访问…

Embeded linux之移植iptables

一、内核环境&#xff1a; linux-3.4.35 -*- Networking support ---> Networking options ---> [*] Network packet filtering framework (Netfilter) ---> IP: Netfilter Configuration ---> <*> IP tables support (required for filtering/masq/NAT)…

Hadoop HIVE

数据仓库工具。构建在hadoop上的数据仓库框架&#xff0c;可以把hadoop下的原始结构化数据变成Hive中的表。&#xff08;主要解决ad-hoc query&#xff0c;即时查询的问题&#xff09; 支持一种与SQL几乎完全相同的语言HQL。除了不支持更新&#xff0c;索引和事务&#xff0c;几…

Xcode9学习笔记67 - 打印查看程序沙箱结构中常用的几个目录

override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.//首先获得应用程序目录的路径&#xff0c;在该目录下有三个文件夹&#xff1a;文档目录、库目录、临时目录以及一个程序包。该目录就是应用程序的…

检测raid类型和磁盘坏道脚本

#!/bin/sh #脚本功能&#xff1a; #安装工具MegaCli64 #Host Information&#xff1a;主机名和ip地址 #Raid Information&#xff1a;raid信息和充电状态 #WARNING Information&#xff1a;MediaErrcount检测坏块和哪块盘 #Disk Information&#xff1a;磁盘信息 #上传MegaC…

简单论述市场营销管理的基本过程

http://www.chinadmd.com/file/uvc3uaosocwevsetrzpaereo_1.html

Javascript-Switch

JavaScript Switch 语句 请使用 switch 语句来选择要执行的多个代码块之一。 语法 switch(n) { case 1:执行代码块 1break; case 2:执行代码块 2break; default:n 与 case 1 和 case 2 不同时执行的代码 }工作原理&#xff1a;首先设置表达式 n&#xff08;通常是一个变量&…

《SpringBoot揭秘 快速构建微服务体系》读后感(三)

SpringApplication&#xff1a;SpringBoot程序启动的一站式解决方案 深入探索SpringApplication执行流程 因为书上的版本是1.2的&#xff0c;比较老&#xff0c;这里参考http://blog.csdn.net/zxzzxzzxz123/article/details/69941910 public ConfigurableApplicationContext ru…

装饰器函数

1.装饰器 ​ 装饰器&#xff1a;在不改变原函数的调用方式和函数&#xff0c;额外的增加功能 简单装饰器def timer(func):def inner():print(time.time())func() # 原来的函数return inner ​ timer # func1 timer(func1) def func1():print(func1) 函数带返回值def timer…

6G SDI/12G SDI 基带信号无压缩传输方案介绍

认知数字像素分辨率&#xff1a; 首先从分辨率(数字像素)角度来讲&#xff0c;从标清时代走到高清&#xff0c;从720x576到现在的1920x1080&#xff0c;宽高比从4:3到16:9&#xff0c;这个是我们比较熟悉的&#xff0c;4K实际上是建立在高清基础之上的&#xff0c;我们称之为“…

4月18日

u盘丢了&#xff0c;毁灭性的灾难 希望明天可以找到它&#xff0c;不然万字的策划案就要重写 这是一个灾难 转载于:https://www.cnblogs.com/dandansang/p/6731174.html

玩转SSH端口转发

ssh端口转发(tunnel) 我们在实施项目部署时经常会遇到一种问题&#xff0c;那就是当我们给一些安全系数高的客户部署服务时&#xff0c;大多都不会给我们提供公网访问的权限&#xff0c;但是很多时候为了方便又会允许服务器直接访问公网&#xff0c;遇到这种情况大多有两种办法…

12.4日团队工作总结

今天团队的主要任务是注重于画图工具的设计&#xff0c;这就意味着我们首要的任务是将画图工具设置出来并可以完整运行&#xff0c;接下来才能顾及之前的改图软件&#xff0c;但今天在设计的过程中&#xff0c;遇到了两者无法无缝结合的问题&#xff0c;目前还没解决。 转载于:…

WIFI DFS测试介绍

http://www.eefocus.com/summer12200/blog/09-02/166038_b9094.html 1. 概述: 目前在802.11系列标准中&#xff0c;涉及物理层的有4个标准&#xff1a;802.11、802.11b、802.11a、802.11g。根据不同的物理层标准&#xff0c;无线局域网设备通常被归为不同的类别&#xff0c;如…

git 远程仓库版本的回退以及git reset 几种常用方式记录

由于 github push 了两个比较潦草的commit, 自己很不满意&#xff0c;又不想重新开vpn进行上传&#xff0c;所以找了一下相关的教程。 最后研究了一下&#xff0c;原理为先在本地还原到你想要的commit,然后强制push 到远程仓库&#xff0c;强制将远程仓库还原到你想要的commit.…

【PHP】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF区别

实例&#xff1a;1、http://localhost/index.php/Home/Home/index.html $_SERVER[QUERY_STRING] ""; $_SERVER[REQUEST_URI] "/index.php/Home/H1/index.html";$_SERVER[SCRIPT_NAME] "/index.php";$_SERVER[PHP_SELF] "/index.php/H…

微软发布Azure Cosmos DB产品以及新的物联网解决方案

微软于当地时间2018年12月4日召开了一年一度的以云计算和数据为中心的开发者大会&#xff0c;在会上微软正式发布Azure机器学习服务(Azure Machine Learning service)&#xff0c;这是一个云平台&#xff0c;允许开发人员构建、训练和部署AI模型&#xff0c;并对Azure认知服务(…

安装Windows10,Ubuntu双系统14.04LTS记录

两种方式都可以制作https://jingyan.baidu.com/article/19192ad85aa445e53e5707c2.htmlhttps://www.cnblogs.com/arcsinw/p/5303615.html

物理层、数据链路层网络设备工作原理

物理层网络设备有中继器、集线器。 中继器的功能是将接收到的信号进行再放大然后传输出去&#xff0c;作用是将扩展网络设备信号传输的物理范围&#xff0c;缺点是扩大数据信号的同时也扩大的噪声&#xff0c;不能够进行广播隔离&#xff0c;网络利用率很低&#xff0c;现在基本…

java中重载和重写的区别

1:重载是指一个类中定义多个方法名相同但参数列表不同的方法&#xff0c;在编译时根据方法参数的个数和类型来决定绑定哪个方法&#xff1b; 重写是指在子类中定义和父类方法签名完全一样的方法&#xff0c;在程序运行时根据对象的类型不同而调用不同的方法。&#xff08;注意不…