Wakaru เป็น decompiler JavaScript สำหรับส่วนหน้าสมัยใหม่ มันนำรหัสต้นฉบับกลับมาจากแหล่งที่มาและ transpiled
ดูตัวอย่างสดสำหรับตัวอย่างโดยละเอียด
แปลงรหัส transpiled กลับเป็นรูปแบบที่อ่านได้และเรียกคืนไวยากรณ์ที่ลดลง
รองรับ transpilers ต่อไปนี้:
อ่านเอกสารสำหรับข้อมูลเพิ่มเติม
แปลงจาวาสคริปต์ที่รวมเป็นโมดูลที่แยกจากกัน
สนับสนุน Bundlers ต่อไปนี้:
ทดสอบเครื่องมือและดูการทำงานที่สนามเด็กเล่น
โดยค่าเริ่มต้น CLI จะทำงานในโหมดอินเทอร์แอคทีฟและแนะนำคุณตลอดกระบวนการ
นอกจากนี้คุณยังสามารถผ่านตัวเลือกเพื่อข้ามขั้นตอนบางอย่างในโหมดการโต้ตอบ
npx @wakaru/cli
# or
pnpm dlx @wakaru/cli เรียกใช้ npx @wakaru/cli --help เพื่อดูรายการตัวเลือกทั้งหมด
| ตัวเลือก | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
--output | "out" | ไดเรกทอรีเอาต์พุต |
--force | false | บังคับให้เขียนไดเรกทอรีเอาต์พุต |
--concurrency | 1 | เฉพาะจำนวนงานที่เกิดขึ้นพร้อมกัน |
--perf | false | แสดงตัวชี้วัดประสิทธิภาพ |
--perf-output | ไดเรกทอรีเอาท์พุทประสิทธิภาพการวัดประสิทธิภาพ |
--concurrency สามารถใช้เพื่อเร่งกระบวนการ แต่โปรดทราบว่ากระบวนการอาจ oom หากไฟล์อินพุตมีขนาดใหญ่เกินไป
หากคุณต้องการเรียกใช้ CLI ในโหมดที่ไม่โต้ตอบคุณสามารถระบุคุณสมบัติได้โดยส่งชื่อคุณสมบัติเป็นอาร์กิวเมนต์แรก
unpacker และ unminify จะทำงานเฉพาะคุณสมบัติที่เกี่ยวข้อง
all จะเรียกใช้ทั้ง unpacker และ unminify ตามลำดับ
npx @wakaru/cli all <files...> [options]
npx @wakaru/cli unpacker <files...> [options]
npx @wakaru/cli unminify <files...> [options]
ตัวเลือกเหล่านี้มีให้ เฉพาะ ใน all โหมด
| ตัวเลือก | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
--unpacker-output | "out/unpack" | แทนที่ไดเรกทอรีเอาท์พุท UNPORDER |
--unminify-output | "out/unminify" | แทนที่ไดเรกทอรีเอาท์พุท |
เมื่อเรียกใช้คุณสมบัติเดียว (ไม่ว่าจะเป็น unpacker หรือ unminify ) CLI จะใช้เส้นทางที่ระบุในตัวเลือก --output พุทเท่านั้น ซึ่งหมายความว่าไม่เหมือนกับในโหมด all ที่มีการสร้างไดเรกทอรีย่อย ( out/unpack และ out/unminify ) โดยอัตโนมัติภายในไดเรกทอรีเอาต์พุตในโหมดคุณลักษณะเดียวไฟล์เอาต์พุตจะถูกวางโดยตรงในไดเรกทอรีที่ระบุ --output โดยไม่มีไดเรกทอรีย่อยเพิ่มเติมใด ๆ
npm install @wakaru/unpacker @wakaru/unminify
# or
pnpm install @wakaru/unpacker @wakaru/unminify
# or
yarn add @wakaru/unpacker @wakaru/unminify@wakaru/unpacker import { unpack } from '@wakaru/unpacker' ;
const { modules , moduleIdMapping } = await unpack ( sourceCode ) ;
for ( const mod of modules ) {
const filename = moduleIdMapping [ mod . id ] ?? `module- ${ mod . id } .js` ;
fs . writeFileSync ( outputPath , mod . code , 'utf-8' ) ;
}@wakaru/unminify import { runDefaultTransformationRules , runTransformationRules } from '@wakaru/unminify' ;
const file = {
source : '...' , // source code
path : '...' , // path to the file, used for advanced usecases. Can be empty.
}
// This function will apply all rules that are enabled by default.
const { code } = await runDefaultTransformationRules ( file ) ;
// You can also specify the rules to apply. Order matters.
const rules = [
'un-esm' ,
...
]
const { code } = await runTransformationRules ( file , rules ) ;คุณสามารถตรวจสอบกฎทั้งหมดได้ที่/ununminify/src/transformations/index.ts
โปรดทราบว่าโครงการนี้ยังอยู่ในระหว่างการพัฒนาก่อน API อาจเปลี่ยนแปลงในอนาคต
และขนาดชุดของแพ็คเกจเหล่านี้มีขนาดใหญ่มาก มันอาจจะลดลงในอนาคต ใช้ด้วยความระมัดระวังบนเบราว์เซอร์ (ใช่เช่นสนามเด็กเล่นสามารถทำงานบนเบราว์เซอร์)
การใช้ wakaru สำหรับการโจมตีเป้าหมายโดยไม่ได้รับความยินยอมร่วมกันก่อนหน้านี้ผิดกฎหมาย มันเป็นความรับผิดชอบของผู้ใช้ในการปฏิบัติตามกฎหมายท้องถิ่นรัฐและรัฐบาลกลางที่เกี่ยวข้องทั้งหมด นักพัฒนาคิดว่าไม่มีความรับผิดและไม่รับผิดชอบต่อการใช้ในทางที่ผิดหรือความเสียหายที่เกิดจากโปรแกรมนี้
มิกซ์