Xposed的hook:Xposed 的原理
Xposed 的原理Android基于Linux,第一个启动的进程自然是init进程,该进程会启动所有Android进程的父进程——Zygote(孵化)进程,该进程的启动配置在/init.rc脚本中,而Zygote进程对应的执行文件是/system/bin/app_process,该文件完成类库的加载以及一些函数的调用工作。在Zygote进程创建后,再fork出SystemServer进程和其他进程。而Xposed Framework呢,就是用自己实现的app_process替换掉了系统原本提供的app_process,加载一个额外的jar包,然后入口从原来的com.android.internal.osZygoteInit.main()被替换成了de.robv.android.xposed.XposedBridge.main(),然后创建的Zygote进程就变成Hook的Zygote进程了,而后面Fork出来的进程也是被Hook过的。这个Jar包在/data/data/de.rbov.android.xposed.installer/bin/XposedBridge.jar。 ...
Java的反射:java的文件加载过程
java的文件加载过程 正射和反射一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 12Apple apple = new Apple(); //直接初始化,「正射」apple.setPrice(4); 上面这样子进行类对象的初始化,我们可以理解为「正」。 而反射则是一开始并不知道我要初始化的类对象是什么,自然也无法使用 new 关键字来创建对象了。 这时候,我们使用 JDK 提供的反射 API 进行反射调用: 12345Class clz = Class.forName("com.chenshuyi.reflect.Apple");Method method = clz.getMethod("setPrice", int.class);Constructor constructor = clz.getConstructor();Object object = constructor.newInstance();method.invoke(object, 4); ...
ip代理池的搭建:学习笔记与要点整理
ip搭建各种IP地址的获取及接入方式vps VPS(Virtual Private Server 虚拟专用服务器)技术,将一台服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术 [1] 。在容器或虚拟机中,每个VPS都可选配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。VPS为使用者提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用 PPPoE (家庭宽带) PPP协议也叫点对点协议(英语:Point-to-Point Protocol,PPP),是一个历史悠久的协议,定义于1992年,备忘录编号RFC 1331。 它的另外一个名字更为我们所熟知——宽带拨号。 当前我们所用的宽带连接技术,无论ADSL还是光纤接入,在数据链路层上,都使用PPP技术。我们在运营商办理宽带时,如果采用ADSL接入, 运营商会为我们提供一个ADSL Modem,如果使用光纤接入, 运营...
常见的混淆反爬措施:学习笔记与要点整理
sojson混淆https://www.sojson.com/jsobfuscator.html 未混淆的代码: 1console.log(" hi jack"); 混淆之后的代码: 1var encode_version = 'sojson.v5', bteax = '__0x846a6', __0x846a6=['EcKowo4Yfw==','w7fDr2wEUg==','KwgLP8Om','wo8eKcKMeQ==','w6AMAcKhwrDCtXY=','OcK+wqw=','54my5p+t5Y+97766w55z5L+j5a2j5p6R5b2B56mV77+n6LyW6Ky75pej5o6z5ouO5Lia55iE5bW85L2i'];(function(_0x5e9976,_0x4f844c){var _0x560038=function(_0x55cc...
常见的 Web 反爬措施:学习笔记与要点整理
一、反爬的本质反爬的核心目的,是在不显著影响真实用户与搜索引擎正常访问的前提下,提高脚本或自动化程序获取站点内容的成本与难度。工程上往往表现为:拖慢采集、提高识别成本、在异常流量上触发验证或封禁。 二、常见反爬方案(基础思路)频率限制在一段时间内限制同一 IP、账号或会话的请求次数,使粗放爬虫变慢、变贵;异常高频可进一步触发验证码或封禁。 检测异常行为短时间跨多页面、路径不符合真人浏览习惯、表单填写过快、点击坐标异常等,可结合 UA、分辨率、时区、字体等环境信息与行为数据做风控。 要求注册与登录将内容与身份绑定,便于追踪滥用;可对异常账号限流或封禁。注册阶段可用邮箱、短信等提高批量注册成本。 文字转图片服务端将敏感文字渲染为图片,阻断「直接抓 HTML 文本」的捷径,需 OCR 或视觉模型才能还原。 依赖 Cookie 与状态通过 Cookie 标识会话或串联多步操作;可与 JS 设置、混淆配合,区分「只拿 HTML」的客户端与真实浏览器路径。 按地理位置返回不同 HTML同一 URL 在不同地区或不同入口下返回结构或资源差异(常见于跨国电商站点),增加「一套规则爬全局」的难度。...
JavaScript hook方法和技巧
hook是什么hook作用就是在你关键代码位置前或者后进行一些处理 如何定位 搜索 断点调试 xhr dom event 自定义 使用油猴插件脚本进行hook json cookie window attr eval/function 等等 chrome调试的方法 官方文档:https://developers.google.com/web/tools/chrome-devtools/javascript/ sources中几个按钮: Filesystem 让devtools加载本地文件系统,并能在code editor中编辑,相当于IDE Overriders 将远程文件代理到本地 Snippets 运行代码片段 无限debugger解决方案(操作chrome浏览器) 禁止所有的断点 在chrome的断点调试栏点击取消所有断点 这样做虽然可以取消别人断点,但是自己也无法下断点分析了 禁止某处的断点 在sources的操作窗口点击想要取消断点的那一行号,右键点击取消断点 条件断点 和上述操作差不多,只是选择条件设置 远程js映射到...
初识websocket:websocket的介绍
websocket的介绍 WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 上面是维基百科的介绍.简单的讲,websocket 和http一样,都是一种网络传输协议 WebSocket 和 HTTP 的区别http 协议是用在应用层的协议,他是基于 tcp 协议的,http 协议建立链接也必须要有三次握手才能发送信息。 http 链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个 request 对应一个 response。长链接是在一定的期限内保持链接。保持 TCP 连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。 ...
初识Protobuf:常见数据加密三种方式
常见数据加密三种方式常见的对数据加密有三种情况: 第一种是,用诸如AES这类加密算法对数据加密,然后在用key进行解密,这类的数据解密的难度不是很大,弄清楚是用的什么加密算法就能反解。 第二种是,用“私有”协议把数据序列化,只有了解该协议的细节才有可能把数据反序列化出来。 第三种是,用第三方厂商的协议来数据序列化,自己搞不出来私有协议的就选用第三方厂商的。比如用 Google 的 Protobuf ,来做数据序列化,也就是数据“加密”。 Protobuf介绍Protobuf应该是Protoc buffers(协议缓冲区),官方解释直接翻译官网的介绍,概括一下就是:Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can...
Python调用js代码:https://github.com/ZSAIm…
1.pyexecjs 安装pip install PyExecJS 用法: import execjs execjs.eval(js代码) 或者 js = js代码 ctx = execjs.compile(js) result = ctx.call(js函数,参数) 存在的问题: 执行编码的输入输出操作出现报错 解决方案,可以把参数使用base64编码一下 执行大型js会慢 2.selenium 用法 js = “js代码” result = browser.execute_script(js) 3.pyppeteer 用法 await page.evaluate(""" () =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) } &qu...
Frida的安装:是Python API,但JavaScript调…
1. 概述Frida是个轻量级别的hook框架 是Python API,但JavaScript调试逻辑Frida的核心是用C编写的,并将Google的V8引擎注入到目标进程中,在这些进程中,JS可以完全访问内存,挂钩函数甚至调用进程内的本机函数来执行。 使用Python和JS可以使用无风险的API进行快速开发。Frida可以帮助您轻松捕获JS中的错误并为您提供异常而不是崩溃。 。 关于frda学习路线了,Frida的学习还是蛮简单的,只需要了解两方面的内容: 1)主控端和目标进程的交互(message) 2)Python接口和js接口(查文档) frida框架分为两部分: 1)一部分是运行在系统上的交互工具frida CLI。 2)另一部分是运行在目标机器上的代码注入工具 frida-serve。 2. 资源和环境12345Windows10 X64Python 3.7mi 6 Anroid 8.1Frida官网:https://www.frida.re/Frida源码:https://github.com/frida 3.运作模式Frida通过其强大的仪器核心Gum提供动态...