Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Knowledge_share
  • js_reverse

js_reverse · Changes

Page history
'add' authored Nov 04, 2021 by 章一锋's avatar 章一锋
Hide whitespace changes
Inline Side-by-side
Showing with 30 additions and 2 deletions
+30 -2
  • knowledge_share/js_reverse.md knowledge_share/js_reverse.md +30 -2
  • No files found.
knowledge_share/js_reverse.md
View page @ 663851d5
......@@ -132,8 +132,7 @@ window = new Proxy(window, {
为增加逆向的难度,重要参数的生成过程都是经过混淆的,常见的混淆策略如下:
1、变量名混淆
2、字符串常量混淆
3、流程混淆:增加冗余逻辑,顺序逻辑变为while if switch 等逻辑
3、流程混淆:增加冗余逻辑,顺序逻辑变为while if switch 条件表达书 等逻辑,条件表达式还有使代码无法在chrome中调试的作用
反混淆工具:js的抽象语法树
```
......@@ -148,6 +147,35 @@ node里构造中间执行过程所依赖的正确的环境,中间执行过程
方法2、js 插桩技术
```
## 常见反爬
```html
检测浏览器信息:
navigator
getBattery:
var promise = getBattery()
promise.then(handler)
canvas
字体大小
performance:
var entries = performance.getEntriesByType('resource')
var nameGetter = Object.getOwnPropertyDescriptor(PerformanceEntry.prototype, 'name').get
var urls = entries.map(nameGetter.call, nameGetter)
函数级别的代码完整性检测:(之后可能有文件级别的完整性检验)
说明:经常会遇到整个js代码美观格式化之后,就无法得到正确结果的情况,这种反爬的原理是调用了函数的toString方法得到自身代码字符串,通过md5或者正则等方式判断
签名是否相似来验证函数完整性。
通过方法:1、修改签名的地方
2、文档不格式化、不用ast反混淆,改需要修改的部分,验证修改的部分没有被签名。
关键参数保留在闭包中,而不是通过传递的方式:
chrome反调试:
说明:例子 chrome浏览器打开淘宝页面出现验证码 只要打开chrome开发者工具,在验证码面板上划一下,验证码验证就通过不了
反外部调用关键函数:通过实例化Error对象获取调用栈,判断函数调用过程是否正确。
```
## 参考教程
```html
......
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages