淺談微信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.pswp.cn/news/252883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252883.shtml
英文地址,請注明出處:http://en.pswp.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;注意不…