Ahuangya's Blog and Technical Notes
website·Indexed 30 days ago
https://blog.ahuangya.comA personal technical blog and documentation site featuring articles and notes on full-stack development. Topics include TypeScript with tRPC, Next.js, Prisma, Zod, React Native, Vue.js, Go (Gin framework), and Python web scraping, as well as guides on Chrome extensions and Docker configuration.
What's inside Ahuangya Blog
- An Abstract Syntax Tree (AST) is a tree representation of the abstract syntactic structure of source code. In JavaScript, ASTs are used for static analysis—analyzing code without executing it. Common applications include code obfuscation/deobfuscation, syntax highlighting, code formatting (e.g., Prettier), linting (e.g., ESLint), and transpilation (e.g., Babel).
Overview of Supabase BaaS
Supabase is an open-source Backend-as-a-Service (BaaS) platform designed as an alternative to Firebase. It allows developers to focus on frontend development by providing managed backend infrastructure, including a PostgreSQL database, authentication, instant APIs, edge functions, real-time subscriptions, and storage.Overview of tRPC for End-to-End Type Safety
tRPC is a TypeScript-based remote procedure call (RPC) framework that simplifies communication between client and server. It allows developers to call remote functions as if they were local functions, providing automatic type safety, autocompletion, and eliminating the need for manual type definitions for request bodies and response data. It is most effective in TypeScript monorepos or full-stack projects using frameworks like Next.js, Nuxt, SvelteKit, or SolidStart.Overview of Easy Language (EPL)
Easy Language (EPL) is a programming language that uses Chinese as its primary coding language. Developed by Wu Tao in 2000, it is designed to lower the entry barrier for Chinese speakers, especially those without a background in English or formal programming. It features a full Chinese interface, a visual UI designer, and a 'form-filling' style of declaration for functions and commands.Overview of Java Reflection
Java Reflection allows a program to inspect and manipulate classes, objects, methods, and fields at runtime. It enables developers to discover a class's properties and methods, invoke methods on objects, and modify attributes without modifying the original source code. This is widely used in framework development to reduce coupling and in Android reverse engineering (hooking) to inject code and inspect parameters.Overview of the Fresh web framework
Fresh is a next-generation web framework based on Deno. It emphasizes simplicity, flexibility, and performance, supporting TypeScript without requiring a build step or complex configuration. The frontend rendering layer is powered by Preact, which is also used to implement its Islands architecture.Overview of the Protocol web development template
Protocol is a full-stack web development template designed for quickly replicating request protocols (API simulation). It is built using Nuxt3 and Nitro, allowing developers to write both frontend (Vue) and backend (Node) code in a single project without the friction of separate frontend/backend repositories. It is designed for agile development and can be deployed on self-hosted servers or Serverless platforms like Vercel and Netlify.Overview of LSPosed Framework
LSPosed is an open-source Xposed framework based on the Riru ART hooking framework. It provides the same API as the original Xposed but supports modern Android versions up to Android 12. It operates in a high-privilege mode, allowing program modification without altering APK files. Key advantages over predecessors like EdXposed include better stability, lower power consumption due to a default whitelist mode, and the ability to activate most modules by restarting the target app rather than the entire system.Overview of Reverse Engineering technical requirements and challenges
Reverse engineering requires a broad technical knowledge base and involves significant challenges due to increasing security measures. Key technical areas include multiple programming languages (EasyLanguage, JavaScript, Python, Java, PHP), tools (Frida, IDA, JEB, jadx), and specialized techniques such as automation scripts, TCP/HTTP protocols, packet capturing, cryptography, image recognition (for captchas/sliders), assembly, decompilation, and AST de-obfuscation.
Modern security protections make reverse engineering increasingly difficult, including:
- Android Protections: Packing (shelling), code obfuscation, anti-debugging, and environment detection.
- Web/Crawler Protections: IP blocking, account banning, JS parameter encryption, browser/TLS fingerprinting, and verification systems.
Beyond technical difficulty, reverse engineering carries significant legal and security risks, as bypassing protections to collect data or modify software can be legally classified as unauthorized intrusion into computer information systems.
Overview of Docker Compose
Docker Compose is a tool used to automate the deployment of multi-container applications. While a Dockerfile allows a single program (like a web service, Redis, MySQL, or Nginx) to run anywhere, Docker Compose allows you to define and run multiple containers as a single integrated unit with a single command, rather than runningdocker runfor each individual container.Implement protocol replication for API simulation
Protocol replication (also known as request simulation) involves capturing network data packets from a host (such as a mobile app or browser) and re-sending those packets using a programming language's network request module. This allows a developer to implement functionality (e.g., login, check-ins, or device control) without using the original application. This process typically requires skills in reverse engineering, web crawling, and network communication protocols.Handle Mutual TLS (mTLS) client certificate authentication
When a server implements two-way authentication (Mutual TLS), it verifies the SSL certificate sent by the client. If you use a proxy (like Fiddler or Charles) or a custom script without the correct client certificate, the server will reject the request, often returning a400 Bad Requesterror (e.g.,400 No required SSL certificate was sent). To resolve this, you must configure your HTTP client to send the specific client certificate and private key required by the server.