# js_reverse: a personal shelf of JavaScript reverse engineering notes and tools

> js_reverse is a notes repository where one developer collected what they learned about JavaScript and app reverse engineering, with a directory per site they studied and a table of the online tools they used. It suits a learner who wants to see the shape of the field, and it is personal study material rather than a maintained tool.

**luzhisheng/js_reverse** — 主要用来收集/学习爬虫相关技术如：js逆向、app逆向、抓包、验证码、加密技术、自动化技术、机器学习。

- Repository: https://github.com/luzhisheng/js_reverse
- Stars: 1,343 · Forks: 286
- Language: JavaScript
- License: not declared
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/luzhisheng-js-reverse

## A learning notebook, and the author says so

The repository describes itself as a place to collect and learn crawler related techniques, listing JavaScript reverse engineering, app reverse engineering, packet capture, captcha work, encryption techniques, automation techniques and machine learning as the subject areas.

The author's own framing of it is more personal than that. The description says that after reverse engineering on and off for a long time, they always felt something was missing, and that finally, this year, there was time to study reverse engineering systematically. It asks readers to star the repository if the notes help, to satisfy a bit of vanity and give the motivation to keep updating.

That framing sets the expectation precisely. This is a notebook, not a library, not a framework and not a course. There is no package to install, no build to run, no test suite to satisfy, and no API to call. What there is, is a record of one person working through the field and keeping the artefacts.

The top level of the repository is a directory listing rather than a source tree. There is no `src/`, no `lib/`, no `package.json` and no `Cargo.toml`. The top level entries are named after topics and sites, in a mix of Chinese and English directory names, and that mix is itself informative about how the author organised the work.

The licence field for the repository is empty, which for a personal notebook is understandable and for reuse is a question to settle before you copy anything out of it. The last push was on 2026-08-20 and there are no GitHub releases.

## The tools table, grouped by what it is actually for

The most substantive part of the documentation is a table of online tools, and the entries fall into clear groups once you sort them by what problem they solve.

The first group is for looking at code as structure rather than as text. The AST explorer at astexplorer.net parses JavaScript into an abstract syntax tree so you can see how the code is actually organised, which is the first step in understanding a heavily obfuscated file, because the printed form of a script is nothing like its structure.

The second group is for producing obfuscated code in the first place. The obfuscator.io tool and the JS code obfuscation and restoration tool at cnlans.com sit on opposite sides of the same trade.

The third group is for taking obfuscated code apart. There are three deobfuscators listed, deobfuscate.io, JStillery at mindedsecurity.github.io/jstillery, and jsdec. And there is a separate JSUnFuck decoder listed at codertab.com.

The fourth group is encoding and hashing, and it is the largest group by count. The MD5 and SHA1 online hash tool at cmd5.com, a URL encode and decode tool, a Base64 conversion tool, an AAEncode encode and decode tool, a JSON formatter, a timestamp converter, a table converter, an online font editor that doubles as a JSON editor, and an online image coordinate picker.

Two entries stand out for what they reveal about the work. The browser fingerprint query tool at bot.sannysoft.com shows you what your browser reveals about itself, which is the other half of anti-automation defence. And the JavaScript cookie change monitoring visualisation tool with a conditional breakpoint hook, which is a debugging aid for watching a script rewrite its own cookies as it runs.

Also listed is the crawler analysis tool at yuanrenxue, MDN's Web API reference in Chinese, and the Google Closure Compiler directory in the repository, which is a separate note of its own.

## The directory names are the syllabus

The repository listing reads like a table of contents for a self-directed course, and it is the most informative thing in the project.

There are the theory and toolchain directories: the AST abstract syntax tree directory, the Google Closure Compiler directory, the tools directory, the string restoration framework pro version dated 0105, and the packet capture directory. There is a jsvmp directory, and the name is a compressed piece of information, since a JavaScript virtual machine protection scheme is a specific and much harder problem than ordinary minification, because the code is executed by an interpreter written in JavaScript rather than being run directly.

There is the practice platform material, with several directories for the Yuanrenxue web crawler exercises at two levels, one for the app reverse engineering version, one for the exercises and one for the reverse learning notes. The platform name appears in the tools table too, at tool.yuanrenxue.com, so the author is using the public training platform as a curriculum rather than only as a source of exercises.

Then there are the per-site directories, which are the actual working notes. There is a Yehmu JavaScript reverse learning directory and a Yehmu JavaScript reverse exercise directory, a Zhìyuǎn JavaScript reverse learning directory, a Xiaohongshu JavaScript reverse learning directory, a Douyin JavaScript reverse learning directory, a Taobao JavaScript reverse learning directory, a Damai directory, a Baidu directory, a Chanmama directory, a Fastmoss directory and a Gooood directory. The Chinese platform names cover the largest and most heavily protected consumer apps, and the fact that each gets its own directory says something about how site-specific the work becomes once a site uses a real signing or encryption scheme.

The 巨量算数 signature and rpc directory is the most specific of them, since it names an encryption and signature computation for a particular service, which is a single endpoint rather than a general technique.

And then the directory names that have nothing to do with reverse engineering at all: learning Vue, Java basics, C++, AutoCAD, PDF processing, machine learning, machine learning and deep learning, the mobile phone number handling directory, the Tampermonkey user script directory, the Facebook directory, the VirusTotal directory, and the images directory. The presence of those tells you this is a general purpose developer notebook that happens to include a large reverse engineering section, not a curated reverse engineering resource.

## What the structure does and does not tell you

It is worth being honest about the limits of reading a directory listing, because the temptation is to fill the gaps with plausible-sounding detail.

What the structure supports is a claim about the shape of the field. A single developer working through web and app reverse engineering accumulates a wide set of techniques that are only visible as a set: AST parsing for structure, deobfuscation for the layers of encoding, string restoration for the specific encoding families, packet capture for the network side, signature computation for the per-service parts, fingerprint inspection for the defence side, and a script injection tool for the instrumentation side. The directory names show all of that coexisting in one workflow, which is the actual shape of the job rather than the tidy taxonomy a textbook would impose.

What the structure does not support is any claim about the quality of the individual notes, and the directory listing makes no such claim either way. Some folders are named after a whole platform, which could mean a thorough worked series or a single captured request. The one thing that is visible about that is the author's own statement that they will keep updating, which implies the state of any given folder changes over time and is not pinned to a release.

The absence of a build system is worth noting too. There is a directory named CMake build, which is a note about a C++ build rather than a build of this repository, so the repository itself is not compiled and not runnable. It is a folder of files to read.

The topic list also mixes reverse engineering with machine learning, and the two machine learning directories sit next to each other. That is not a strange combination in practice, since classifying or recognising content is a common reason to end up needing machine learning after you have a working extraction pipeline, but the documentation does not connect the two, so it would be overreach to present this as a unified curriculum.

There is one ethical point that the subject matter itself raises, and it is not an objection to the notes. Captcha work and per-service signature computation are listed as subjects, and both sit close to the line between learning how a system defends itself and building something to get around it. A notebook that documents how a signature is computed is genuinely useful for understanding what a client is doing and why, and the difference between that and a bulk abuse tool is mostly about what you build afterwards. The platform naming pattern in the directory list, one folder per well-known service, is the pattern of someone learning how each service works rather than someone shipping a scraper farm.

## Who should read this, and what to take from it

The value of a personal notebook is that it shows a route rather than a reference, and that is the case for reading this one.

If you are starting out in this area and want to know what the tools are and roughly when each one is needed, the table in the documentation is a decent map, because it is ordered by the problems it solves rather than by popularity. The AST explorer before the deobfuscator before the string restoration tool is the actual order of work, and seeing that written down is worth something.

If you are already competent, the value is different. A directory named after a platform you have struggled with may contain exactly the insight that took someone else a week, and the platform directories for the larger consumer apps are where the difficult material is most likely to be, because those are the sites with real protections. The jsvmp directory and the string restoration framework directory are the two most likely to hold something you cannot get from documentation, since both address problems that are not publicly documented at all.

What you should not take from it is a method that scales. The explicit structure of one directory per site is a manual approach. Every site has its own quirks, and the notes here represent one person working through that for a set of sites. Anyone who needs this at scale is solving a different problem, and the general answer to that problem is a maintained open source framework rather than a notebook of captured samples.

The practical guidance is short. Start with the AST explorer and the deobfuscators to learn the shape of the problem, use the table as a lookup for the specific encoding you are staring at, look at the practice platform directories for worked examples in a structured setting, and check the per-service directories when you hit a service that resists the general tools. And before you copy any of it, settle the licence question, because the repository does not state one and the notes are somebody else's work by definition.

## Conclusion

js_reverse fits a developer who has been reverse engineering web and app code in fits and starts and wants a map of the territory, because the directory names alone show which sites are hard and which techniques were needed for each. Skip it if you want a tool you can install, since there is no package, no build and no test suite here, only notes, and do not treat any single directory as a maintained tutorial. Before you rely on the notes, check the licence situation, since the repository records no licence, and expect the notes to be uneven, with some folders holding worked examples and others holding little more than a link. The last push was on 2026-08-20.

## FAQ

### What is the js_reverse repository?

It is a personal collection of notes and examples for learning crawler related techniques including JavaScript reverse engineering, app reverse engineering, packet capture, encryption and automation, gathered over time by one developer rather than published as a tool.

### Which reverse engineering tools does the repository list?

The table includes the AST explorer, obfuscator.io, three deobfuscators including JStillery and jsdec, the JavaScript UnFuck decoder, a JavaScript cookie change monitor with a conditional breakpoint hook, a browser fingerprint query tool, and a set of encoding and hashing utilities for MD5, SHA1, Base64, URL encoding, AAEncode and JSON.

### What is in the repository directory structure?

Named directories for techniques such as AST abstract syntax trees, the Google Closure Compiler, packet capture, jsvmp and a string restoration framework, directories for the Yuanrenxue practice platform, and per-site notes for Chinese consumer platforms including Xiaohongshu, Douyin, Taobao and Damai, alongside unrelated study directories.

### Is js_reverse an installable project?

No. There is no package manifest, no source directory and no build for the repository itself. The CMake build directory is a note about building C++ elsewhere, and the project is a set of files to read rather than code to run.

### What licence does js_reverse use?

The repository records no licence, so there is no stated permission for reuse. The last push was on 2026-08-20 and there are no GitHub releases.

## Sources

- [Issues](https://github.com/luzhisheng/js_reverse/issues)
- [luzhisheng/js_reverse on GitHub](https://github.com/luzhisheng/js_reverse)
- [README](https://github.com/luzhisheng/js_reverse/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/luzhisheng-js-reverse
