[959]JS逆向技巧分享


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

1. 搜索

1.1 全局搜索

适用于根据关键词快速定位关键文件及代码

当前页面右键->检查,弹出检查工具

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

1.2 代码内搜索

适用于根据关键词快速定位关键代码

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

2. debug

2.1 常规debug

适用于分析关键函数代码逻辑

  1. 埋下断点

  2. 调试

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

2.2 XHR debug

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

2.3 行为debug

适用于点击按钮时,分析代码执行逻辑

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

3 查看请求调用的堆栈

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

4. 执行堆内存中的函数

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

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

5. 修改堆栈中的参数值

6. 写js代码

7. 打印windows对象的值

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

8. 勾子

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

8.1 cookie钩子

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


当cookie中匹配到了 TSdc75a61a , 则插入断点。

8.2 请求钩子

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


当请求的url里包含 MmEwMD 时,则插入断点

8.3 header钩子

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


当header中包含 Authorization 时,则插入断点

8.4 manifest.json

插件的配置文件

使用方法
  1. 如图所示,创建一个文件夹,文件夹中创建一个钩子函数文件inject.js 及 插件的配置文件
    mainfest.json 即可

  1. 打开chrome 的扩展程序, 加载已解压的扩展程序,选择步骤1创建的文件夹即可

  2. 切换回原网页,刷新页面,若钩子函数关键词匹配到了,则触发debug

9. 破解无限debugger防调试

如果你打开chrome的检查工具,发现自动断到了如下的位置,那么这种手段为常用的反调试手段


对应的破解手段如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwGsab1M-1618672988348)(https://upload-images.jianshu.io/upload_images/12504508-5cc7b7f3525bef12.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

从原函数中可以看到这是一个无限递归的函数,目的就是当你开启了检查工具时,出现无数次debug,阻止你debug调试。那么我们重写这个函数就可以了,在Console 一栏中使用匿名函数给本函数重新赋
值,这样就把 _0x355d23 函数变为了一个空函数,达到了破解无限debugger的目的

总结

以上为我做js逆向分析时用到的手段,如有不足之处或更多技巧,欢迎指教补充。愿本文的分享对您之后分析js有所帮助。谢谢~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
app逆向js逆向是两种不同的技术方法。app逆向主要是指对安卓应用程序的逆向工程,通过反编译、分析、修改应用程序的代码和功能。在app逆向过程中,常用的工具包括jadx反编译工具、JEB反编译工具、Frida之Hook工具、IDAPro反汇编工具等。可以通过这些工具来分析应用程序的逻辑、修改参数和功能等。 而js逆向主要是指对JavaScript代码的逆向工程,通过分析和解密JavaScript代码,获取其中的关键信息。在js逆向过程中,常用的工具包括查壳工具、加密解密工具、鬼鬼js加密浏览器、Python的execjs库等。可以通过这些工具来解密加密的JavaScript代码、分析代码逻辑以及调试代码等。 所以,app逆向主要是对安卓应用程序进行逆向分析和修改,而js逆向主要是对JavaScript代码进行解密和分析。这两种逆向方法在实际应用中可以结合使用,以达到更好的逆向效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [APP逆向工具-js调试](https://blog.csdn.net/b806071099/article/details/115553351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [suning易购商城app api_sign参数逆向解析 最新现可用_x_req_block_加密 解密sign等参数](https://download.csdn.net/download/qq_40609990/85586243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Android逆向基础入门](https://blog.csdn.net/weixin_43411585/article/details/122503411)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值