js逆向技巧

这篇具有很好参考价值的文章主要介绍了js逆向技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、总结

  1. 搜索:全局搜索、代码内搜索
  2. debug:常规debug、XHR debug、行为debug
  3. 查看请求调用的堆栈
  4. 执行堆内存中的函数
  5. 修改堆栈中的参数值
  6. 写js代码
  7. 打印windows对象的值
  8. 勾子:cookie钩子、请求钩子、header钩子

二、js逆向技巧

博客对应课程的视频位置:

当我们抓取网页端数据时,经常被加密参数、加密数据所困扰,如何快速定位这些加解密函数,尤为重要。本片文章是我逆向js时一些技巧的总结,如有遗漏,欢迎补充。

所需环境:Chrome浏览器

1. 搜索

1.1 全局搜索
适用于根据关键词快速定位关键文件及代码

当前页面右键->检查,弹出检查工具js逆向技巧

搜索支持 关键词、正则表达式

1.2 代码内搜索
适用于根据关键词快速定位关键代码

点击代码,然后按ctrl+f 或 command+f 调出搜索框。搜索支持 关键词、css表达式、xpathjs逆向技巧

2. debug

2.1 常规debug
适用于分析关键函数代码逻辑

a、埋下断点js逆向技巧

b、调试

js逆向技巧

如图所示,我标记了1到6,下面分别介绍其含义

1.执行到下一个端点
2.执行下一步,不会进入所调用的函数内部
3.进入所调用的函数内部
4.跳出函数内部
5.一步步执行代码,遇到有函数调用,则进入函数
6.Call Stack 为代码调用的堆栈信息,代码执行顺序为由下至上,这对于着关键函数前后调用关系很有帮助

2.2 XHR debug
匹配url中关键词,匹配到则跳转到参数生成处,适用于url中的加密参数全局搜索搜不到,可采用这种方式拦截js逆向技巧

2.3 行为debug
适用于点击按钮时,分析代码执行逻辑js逆向技巧

如图所示,可快速定位点击探索按钮后,所执行的js。

3 查看请求调用的堆栈

可以在 Network 选项卡下,该请求的 Initiator 列里看到它的调用栈,调用顺序由上而下:js逆向技巧

4. 执行堆内存中的函数

当debug到某一个函数时,我们想主动调用,比如传递下自定义的参数,这时可以在检查工具里的console里调用js逆向技巧

此处要注意,只有debug打这个函数时,控制台里才可以调用。如果想保留这个函数,可使用this.xxx=xxx 的方式。之后调用时无需debug到xxx函数,直接使用this.xxx 即可。

5. 修改堆栈中的参数值

js逆向技巧

6. 写js代码

js逆向技巧

7. 打印windows对象的值

在console中输入如下代码,如只打印_$开头的变量值

for (var p in window) {
if (p.substr(0, 2) !== "_$")
continue;
console.log(p + " >>> " + eval(p))
}

8. 勾子

以chrome插件的方式,在匹配到关键词处插入断点

8.1 cookie钩子
用于定位cookie中关键参数生成位置

var code = function(){
var org = document.cookie.lookupSetter('cookie');
document.defineSetter("cookie",function(cookie){
if(cookie.indexOf('TSdc75a61a')>-1){
debugger;
}
org = cookie;
});
document.defineGetter("cookie",function(){return org;});
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
当cookie中匹配到了 TSdc75a61a, 则插入断点。

8.2 请求钩子
用于定位请求中关键参数生成位置

var code = function(){
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async){
if (url.indexOf("MmEwMD")>-1){
debugger;
}
return open.apply(this, arguments);
};
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
当请求的url里包含MmEwMD时,则插入断点

8.3 header钩子
用于定位header中关键参数生成位置

var code = function(){
var org = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){
if(key=='Authorization'){
debugger;
}
return org.apply(this,arguments);
}
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
当header中包含Authorization时,则插入断点

8.4 manifest.json
插件的配置文件

{
"name": "Injection",
"version": "2.0",
"description": "RequestHeader钩子",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"inject.js"
],
"all_frames": true,
"permissions": [
"tabs"
],
"run_at": "document_start"
}
]
}
使用方法
a、如图所示,创建一个文件夹,文件夹中创建一个钩子函数文件inject.js 及 插件的配置文件 mainfest.json 即可js逆向技巧

b、打开chrome 的扩展程序, 加载已解压的扩展程序,选择步骤1创建的文件夹即可js逆向技巧

c、切换回原网页,刷新页面,若钩子函数关键词匹配到了,则触发debugjs逆向技巧文章来源地址https://www.toymoban.com/news/detail-460288.html

到了这里,关于js逆向技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过

    在进行渗透测试过程中,在一些功能点进行参数注入或者枚举爆破等过程中,会出现参数进行加密的情况,但是我们输入参数并不是加密状态,即便测试点存在漏洞也不可能测试成功,这时候便需要将所提交参数进行加密后在进行注入,针对JS应用我们可以采用JS断点调试的方

    2024年02月10日
    浏览(31)
  • 【python】webpack是什么,如何逆向出webpack打包的js代码?

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月25日
    浏览(52)
  • Js:变量类型,代码块,++前后区别,函数声明/表达式,debuger调试,元素/event/window大小和位置

    语法: 注意: 只有在js文件才可以自动补全 @param 。vue文件只会显示 /** */ 上述注释中 @description 和 @return 是自定义的代码片段,快捷键 jsfn 作用: 在vue文件引入方法后,可以查看方法的注释说明,规范代码。 方法中变量快捷打印, 第一步选中方法的 变量 进行 复制 第二步

    2023年04月08日
    浏览(27)
  • JS优化技巧,解决冗余代码

    简单的条件判断逻辑用 if else 或者 三元运算符, 一眼看过去还能知道说的啥,但是大量的 if else 和叠加在一起的三元运算符就是接盘侠的噩梦~~~ 给大家上一个三元运算符叠加的案例,我是真实在项目中遇到过,cpu直接干爆~~~ 大概是这样的,具体的项目代码不好放在这里,小

    2024年02月14日
    浏览(24)
  • 【万字解析】JS逆向由浅到深,3个案例由简到难,由练手到项目解析(代码都附详细注释)

    大家好,我是辣条哥! 今天给大家上点难度,不然总觉得辣条哥太菜了!我们今天聊聊JS逆向, 首先JS逆向是指对使用JavaScript编写的代码进行逆向工程,以获取代码的逻辑、算法或者进行修改。 下面举一个简单的例子来说明JS逆向的过程: 假设有一个网站,它使用了JavaScr

    2024年02月15日
    浏览(37)
  • IDEA中DEBUG技巧

    如上图标注 1 所示,表示设置 Debug 连接方式,默认是 Socket 。 Shared memory 是 Windows 特有的一个属性,一般在 Windows 系统下建议使用此设置,相对于 Socket 会快点。 ## Debug 常用快捷键 Win 快捷键 Mac 快捷键 介绍 F7 F7 进入下一步,如果当前行断点是一个方法,则进入当前方法体内

    2024年02月07日
    浏览(23)
  • Pycharm Debug调试技巧

    Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括: 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。 逻辑错误:程序可以运行,但是它并没有如预期那样工作。这通常是因

    2024年02月09日
    浏览(39)
  • Keil Debug 串口调试技巧

    更改对应的bebug窗口参数 两边的 Dialog DLL 更改为:DARMSTM.DLL 两边的 Parameter (这里的根据单片机型号更改)更改为:-pSTM32F103VE 选择左边的 Use Simulator 选项。 串口打印 打开窗口 窗口位置 只要运行就可以查看了 在命令串口键入:MODE COM1 115200, 0, 8, 1 回车 再输入:ASSIGN COM1 S1I

    2024年02月06日
    浏览(34)
  • IDEA常用的Debug技巧

    IDEA是Java程序员必备的IDE,非常强大的功能,搭配很多插件的时候就可以增强它的功能,开发出现异常的时候利用好Debug可以做到排查问题可以事半功倍。 断点:指可以让程序中断(暂停)的地方,方便进行调试分析👍。 在行号右边“点击”,出现红色圆点即可打上断点。

    2024年02月06日
    浏览(37)
  • IDEA debug 断点调试技巧

    1、首先看下IDEA中Debug模式下的界面: ① 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。 ② 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。 ③ Debug窗口:访

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包