iOS开发通过微信学习hijack(一)函数劫持
前段时间通过学习WCDB,基本掌握了WCDB的使用方法,最近通过解压微信ipa包,发现里面有一个hijack.js
文件。就在网上搜了一下hijack, 没想到发现了新天地,JS函数劫持。
什么是js函数劫持?
函数劫持,顾名思义,即在一个函数运行之前把它劫持下来,添加我们想要的功能。当这个函数实际运行的时候,它已经不是原本的函数了,而是带上了被我们添加上去的功能。这也是我们常见的钩子函数的原理之一。
函数劫持的原理
一般的劫持原理都是一个思路:
一、使用新的变量保存即将被劫持的函数。
二、改写被劫持函数的功能。
三、在被劫持函数的末尾段(或者其他适当部位)重新调用重写之前的函数。注:某些场合下不会有第三步,比如恶意攻击的时候
js函数劫持示例
<html><head></head><body><script>let warn = alert
window.alert = (t) => {warn('How are you?')
}alert('Help me...!!!')</script></body>
</html>
运行结果如下:
大家可以看到按照本来弹框要展示的内容是Help me...!!!
但实际上却展示出来了How are you?
。大家可以明显感觉到js函数被劫持的效果。
当然了,js函数被劫持后,执行了某些操作后,仍然可以执行原来的内容。具体代码如下:
let warn = alert
window.alert = (t) => {if (confirm('How are you?')) warn(t)
}alert('Help me...!!!')
运行结果如下:
选中确认后:
我们发现确认后,又重新走了原来的alert方法。这种劫持的方式,在某些时候对我们来说非常的有用,比如采集信息,数据埋点等等。
反劫持
知道了劫持的原理和方式,我们就可以有针对性的措施。
措施1:新建一个页面,在控制台输入alert
可以看到如下的结果:
function alert() { [native code] }
[native code]
说明代码没有被劫持,对于别的方法是否被劫持,我们可以如法炮制。
措施2:对于某些方法,我们在开发过程中主动进行劫持,然后加入采集用户信息,并上报的代码,如果有某些人恶意对我们这个敏感函数进行劫持的时候,我们就可以尽可能多的采集到劫持者的信息了。
js函数劫持的作用
由于自己是非专业前端人士,认知有限,在这里就说说自己的看法吧,希望大家不要见笑。个人认为函数劫持在数据埋点,反劫持,增强函数功能等很多的方面都可以使用到。
参考博客:
https://segmentfault.com/a/1190000006967018
更多优质文章,可以微信扫码关注:
iOS开发通过微信学习hijack(一)函数劫持相关推荐
- iOS开发通过微信学习WCDB(二)
通过<iOS开发通过微信学习WCDB(一)>这篇博客,相信大家对WCDB已经有了一个简单的了解和认识.这篇文章主要是为了进一步深入的学习 ###数据库加密 上篇文章中提到了,自己在 ...
- iOS开发通过微信学习WCDB(一)
最近通过对微信ipa包解压发现微信有使用WCDB这个开源库,搜索了一下了解到WCDB(WeChat Database)是一个高效.完整.易用的移动数据库框架,基于SQLCipher,支持iOS, ...
- iOS开发通过微信学习WCDB(三)
通过之前的两篇文章对wcdb能够简单的使用了,这些知识储备多时,最近终于可以派上用场了,最近app有一个通讯录的新功能,实现联系人列表的排序,以及检索,刚好可以用用wcdb去实现. 联系人模型的建 ...
- iOS开发通过微信学习WCDB(四)
最近打算将封装一个基于wcdb操作的数据库私有库,在封装使用的过程中遇到了一些问题,将问题整理了一下,分享给大家. 私有pod库依赖于WCDB 造成lint失败 最开始遇到这个问题的时没有眉目 ...
- iOS开发Swift语言学习教程-欧阳坚-专题视频课程
iOS开发Swift语言学习教程-16345人已学习 课程介绍 Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...
- iOS开发-类似微信录音上滑取消功能
iOS开发-类似微信录音上滑取消功能 前言 效果 代码 先自定义UIButton 使用 监听上下滑动代码 前言 在社交媒体中开发中遇到需要做类似微信录音上滑取消功能,例子,虽然不是很好看,但是细节满满 ...
- iOS开发-关于微信WCDB的使用 WCDB嵌套模型的使用
iOS开发-关于微信WCDB的使用 WCDB嵌套模型的使用 前言 开发前准备 开发 关于生成WCDB文件 选择new file即可找到 关于嵌套模型的生成 分两步 选择new file即可找到 增删改 ...
- IOS 开发高手课 学习笔记(第二部分)
第二部分主要是性能监控相关 Part 7. 包大小:如何从资源和代码层面实现全方位瘦身? 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新 ...
- 插件 iOS开发之微信自动抢红包功能
最近在学习 iOS 逆向开发的时候,为了练手,开发了一个 iOS 版的微信抢红包 tweak,并且已经发布到了 Github 上面. 微信抢红包 Tweak 的 Github 地址 点击打开链接 ...
- iOS开发之微信自动抢红包功能
最近在学习 iOS 逆向开发的时候,为了练手,开发了一个 iOS 版的微信抢红包 tweak,并且已经发布到了 Github 上面. 微信抢红包 Tweak 的 Github 地址 点击打开链接 ...
最新文章
- Google 顶级论文:机器学习系统,隐藏多少技术债?
- 南阳理工大学 gnns 新基准
- mongodb与java结合_MongoDB初探系列之四:MongoDB与Java共舞
- 20172325 2018-2019-1 《Java程序设计》第二周学习总结
- SparkSQL调优
- vscode中安装webpack_VSCode下手动构建webpack项目(示例代码)
- plsql中文乱码,显示问号
- LVGL(2)Visual Studio模拟器使用
- java对mysql进行查找替换_java对mysql的增删改查
- ITK简介与ITK Pipeline
- android 多媒体相册,朵朵多媒体相册免费版
- 如何编译运行opencv的sample
- 用微信公众号控制ESP8266的LED,进一步使用微信当遥控器
- 對Googgle adsense廣告作弊和Googeladsense點擊廣告的生存前景看法
- ALFA机器视觉深度学习外观检测自学习人工智能软件——ocr字符检测
- c++语言常量,C++常量(constant)
- 不常用SQL语句整理
- 【FAQ】应用集成HMS Core部分服务出现“ 6003报错”情况的解决方法来啦
- Winform自定义MessageBox
- excel怎么设置打印区域_如何设置打印预览,Excel打印功能介绍
热门文章
- delphi char数组、string和Pchar的相互转换
- id 查找apple,怎么查找我的apple id?
- Nginx跳转到用户首页
- 自定义QGraphicsItem
- Android 软件行为监控系统 的原理 主要是利用binder机制原理添加一个filter
- 十种常见的代码编辑器
- org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lett
- 小米笔记本Ruby默认开启fn键如何解决方法步骤
- springmvc(表现层/Web层框架)
- win32应用程序和win32控制台应用程序