Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
box-js — जावास्क्रिप्ट मैलवेयर का अध्ययन करने के लिए एक उपकरण। | Kitploit
उपकरण/GitHubGitHub/capacitorset/box-js
समझौता संकेतक (IOC) प्रबंधनगतिशील विश्लेषण (सैंडबॉक्सिंग)फोरेंसिकमालवेयर विश्लेषण
GitHubcapacitorset/box-js

box-js

जावास्क्रिप्ट मैलवेयर का अध्ययन करने के लिए एक उपकरण।

रिपॉजिटरी देखें
672881 महीना पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

box.js

npm Build Status paypal

दुर्भावनापूर्ण जावास्क्रिप्ट का विश्लेषण करने के लिए एक उपकरण।

स्थापना

npm से बस box-js इंस्टॉल करें:

root@kitploit:~
npm install box-js --global

box-js निम्न रूप में भी उपलब्ध है:

  • Cuckoo मॉड्यूल के रूप में (देखें integrations निर्देशिका और Nwinternights/Cuckoo_Boxjs);
  • Dockerfile के रूप में (देखें integrations/README.md);
  • सुरक्षा पेशेवरों के लिए डिस्ट्रोस में पैकेज के रूप में (REMnux, BlackArch);
  • ओपन सोर्स एप्लिकेशन के भाग के रूप में (Intel Owl);
  • वाणिज्यिक तृतीय-पक्ष सेवाओं के भाग के रूप में (any.run)।

उपयोग

मान लीजिए कि आपके पास sample.js नामक एक नमूना है: इसका विश्लेषण करने के लिए, बस चलाएँ

root@kitploit:~
box-js sample.js

संभवतः आप किसी भी पेलोड को डाउनलोड भी करना चाहेंगे; डाउनलोड सक्षम करने के लिए --download फ़्लैग का उपयोग करें। अन्यथा, इंजन 404 त्रुटि का अनुकरण करेगा, ताकि स्क्रिप्ट को यह सोचने में धोखा दिया जाए कि वितरण साइट डाउन है और किसी भी फ़ॉलबैक साइट से संपर्क करे।

Box.js Windows JScript वातावरण का अनुकरण करेगा, कंसोल पर अनुकरण का सारांश प्रिंट करेगा, और sample.js.results नामक एक फ़ोल्डर बनाएगा (यदि यह पहले से मौजूद है, तो यह sample.js.1.results और इसी तरह बनाएगा)। इस फ़ोल्डर में शामिल होगा:

  • analysis.log, विश्लेषण का एक लॉग जैसा कि स्क्रीन पर मुद्रित हुआ था;
  • UUIDs द्वारा पहचाने गए फ़ाइलों की एक श्रृंखला;
  • snippets.json, नमूने द्वारा निष्पादित कोड के टुकड़ों की एक सूची (जावास्क्रिप्ट, शेल कमांड, आदि);
  • urls.json, संपर्क किए गए URL की एक सूची;
  • active_urls.json, URL की एक सूची जो सक्रिय मैलवेयर छोड़ने लगते हैं;
  • resources.json, ADODB स्ट्रीम (अर्थात फ़ाइलें जो स्क्रिप्ट ने डिस्क पर लिखी थीं) फ़ाइल प्रकारों और हैश के साथ;
  • IOC.json, IOC (Indicators of Compromise) के रूप में पहचाने गए व्यवहारों की एक सूची। इनमें रजिस्ट्री एक्सेस, लिखी गई फ़ाइलें, HTTP अनुरोध आदि शामिल हैं।

आप इनका स्वयं विश्लेषण कर सकते हैं, या आप इन्हें स्वचालित रूप से Malwr, VirusTotal या Cuckoo सैंडबॉक्स में सबमिट कर सकते हैं: अधिक जानकारी के लिए box-export --help चलाएँ।

अधिक अलगाव के लिए, विश्लेषण को अस्थायी Docker कंटेनर में चलाने की अनुशंसा की जाती है। अधिक जानकारी के लिए integrations/README.md देखें।

यदि आप विश्लेषण को स्वचालित करना चाहते हैं, तो आप रिटर्न कोड का उपयोग कर सकते हैं - integrations/README.md में दस्तावेजित - विभिन्न प्रकार की त्रुटियों के बीच अंतर करने के लिए।

'document' ऑब्जेक्ट या अन्य ऑब्जेक्ट्स/फंक्शंस के गायब होने के कारण विश्लेषण विफल होता है

git से box-js रिपॉजिटरी में एक boilerplate.js फ़ाइल शामिल है। यह फ़ाइल document जैसे सामान्य ब्राउज़र ऑब्जेक्ट्स के कुछ स्टबbed संस्करणों को परिभाषित करती है। --prepended-code=DIR/boilerplate.js विकल्प के साथ अपने विश्लेषण को फिर से चलाने का प्रयास करें, जहाँ DIR क्लोन किए गए box-js रिपॉजिटरी की निर्देशिका है या --prepended-code=default के साथ। --prepended-code विकल्प box-js को बताता है कि दी गई फ़ाइल में जावास्क्रिप्ट को विश्लेषण किए जा रहे नमूने में prepend करे।

ध्यान दें कि आप boilerplate.js कॉपी कर सकते हैं और आवश्यकतानुसार अपने स्वयं के स्टबbed क्लास, ऑब्जेक्ट आदि जोड़ सकते हैं। डिफ़ॉल्ट box-js boilerplate.js फ़ाइल का पूर्ण पथ प्रिंट करने के लिए --prepended-code=show-default कमांड लाइन विकल्प का उपयोग करें।

बैच उपयोग

जबकि box.js का उपयोग आमतौर पर एकल फ़ाइलों पर किया जाता है, यह बैच विश्लेषण भी चला सकता है। आप विश्लेषण करने के लिए फ़ाइलों या फ़ोल्डरों की एक सूची पास कर सकते हैं:

root@kitploit:~
box-js sample1.js sample2.js /var/data/mySamples ...

डिफ़ॉल्ट रूप से box.js नमूनों को समानांतर में संसाधित करेगा, प्रति कोर एक विश्लेषण चलाएगा। आप --threads के लिए एक मान निर्दिष्ट करके एक अलग सेटिंग का उपयोग कर सकते हैं: विशेष रूप से, 0 सीमा हटा देगा, जिससे box-js जितना संभव हो उतने विश्लेषण थ्रेड उत्पन्न करेगा और बहुत तेज़ विश्लेषण के परिणामस्वरूप लेकिन संभवतः सिस्टम को ओवरलोड करेगा (ध्यान दें कि विश्लेषण आमतौर पर CPU-बाउंड होते हैं, RAM-बाउंड नहीं)।

आप केवल प्रगति जानकारी प्रदर्शित करने और विश्लेषण-संबंधी संदेशों को शांत करने के लिए --loglevel=warn का उपयोग कर सकते हैं।

विश्लेषण पूरा होने के बाद, आप सक्रिय URL इस प्रकार निकाल सकते हैं:

root@kitploit:~
cat ./*.results/active_urls.json | sort | uniq

फ़्लैग

root@kitploit:~
NAME                   DESCRIPTION                                                                     
-h, --help                 सहायता पाठ दिखाएँ और बाहर निकलें                                                     
-v, --version              पैकेज संस्करण दिखाएँ और बाहर निकलें                                               
--license                  लाइसेंस दिखाएँ और बाहर निकलें                                                       
--debug                    जब अनुकरण त्रुटि होती है तो मरें, "बैच मोड" में भी, और निकास कोड पास करें  
                           कोड।                                                                           
--loglevel                 लॉगिंग स्तर (debug, verbose, info, warning, error - डिफ़ॉल्ट "info")           
--threads                  बैच मोड में चलने पर, एक साथ कितने विश्लेषण चलाने हैं (0 =      
                           असीमित, डिफ़ॉल्ट: जितने CPU कोर की संख्या)                         
--download                 पेलोड को वास्तव में डाउनलोड करें                                                  
--encoding                 इनपुट नमूने का एन्कोडिंग (डिफ़ॉल्ट रूप से स्वचालित रूप से पहचाना जाएगा)        
--timeout                  स्क्रिप्ट इस कई सेकंड के बाद टाइमआउट हो जाएगी (डिफ़ॉल्ट 10)                    
--output-dir               परिणाम फ़ाइलों और फ़ोल्डरों को लिखने के लिए डिस्क पर स्थान (डिफ़ॉल्ट   
                           वर्तमान निर्देशिका)                                                              
--preprocess               मूल स्रोत कोड को प्रीप्रोसेस करें (रिवर्स इंजीनियरिंग को आसान बनाता है, लेकिन कुछ
                           सेकंड लगते हैं)                                                                  
--unsafe-preprocess        अधिक आक्रामक प्रीप्रोसेसिंग। अक्सर बेहतर कोड में परिणाम होता है, लेकिन कुछ   
                           किनारे के मामलों पर टूट सकता है (जैसे प्रोटोटाइप को फिर से परिभाषित करना)                                     
--prepended-code           इनपुट फ़ाइल या निर्देशिका जिसमें कोड है जिसे JS फ़ाइल(फ़ाइलों) के सामने
                           prepend किया जाना चाहिए जिसका हम विश्लेषण कर रहे हैं। यदि निर्देशिका दी गई है, तो
                           निर्देशिका में सभी फ़ाइलों की सामग्री prepend करता है। यदि 'default' दिया गया है, तो
                           box-js के साथ आने वाली डिफ़ॉल्ट boilerplate.js का उपयोग करें। यदि 'show-default' दिया गया है, तो
                           boilerplate.js का पथ प्रिंट करें और बाहर निकलें (उपयोगी यदि आप डिफ़ॉल्ट boilerplate कोड को
                           कॉपी और संशोधित करना चाहते हैं)।      
--fake-script-engine       WScript.FullName और WScript.Name में रिपोर्ट करने के लिए स्क्रिप्ट इंजन (जैसे
                           'cscript.exe', 'wscript.exe', या 'node')। डिफ़ॉल्ट wscript.exe है।               
--fake-cl-args             नकली स्क्रिप्ट कमांड लाइन तर्क। स्ट्रिंग में इन्हें कॉमा से
                           अलग किया जाना चाहिए।                                                                      
--fake-sample-name         विश्लेषण किए जा रहे नमूने के लिए उपयोग करने के लिए नकली फ़ाइल नाम। पूर्ण पथ या केवल
                           उपयोग करने के लिए फ़ाइल नाम हो सकता है। यदि आपके पास पथ में '\' है तो इस
                           कमांड लाइन तर्क मान में उन्हें '\\' के रूप में एस्केप करें (जैसे --fake-sample-name=C:\\foo\\bar.js)।           
--fake-language            Win32_OperatingSystem.OSLanguage के लिए वापस करने के लिए भाषा कोड निर्दिष्ट करें।       
                           समर्थित मान 'spanish', 'english', और 'portuguese' हैं।                    
--fake-domain              WScript.Network.UserDomain के लिए वापस करने के लिए उपयोगकर्ता डोमेन निर्दिष्ट करें।
--fake-download            नकली बनाएं कि HTTP अनुरोध काम करते हैं और उन्हें एक नकली पेलोड लौटाएं                
--no-kill                  रनटाइम त्रुटियाँ होने पर एप्लिकेशन को न मारें                           
--no-echo                  जब स्क्रिप्ट डेटा प्रिंट करती है, तो इसे कंसोल पर न प्रिंट करें                     
--no-rewrite               `@cc_on` समर्थन के अलावा, स्रोत कोड को बिल्कुल भी पुनर्लेखन न करें          
--no-catch-rewrite         try..catch खंडों को पुनर्लेखन न करें ताकि अपवाद वैश्विक-स्कोप हो               
--no-cc_on-rewrite         `/*@cc_on <...>@*/` को `<...>` में पुनर्लेखन न करें                                   
--no-eval-rewrite          `eval` को पुनर्लेखन न करें ताकि इसका तर्क पुनर्लेखित हो                        
--no-file-exists           Scripting.FileSystemObject.FileExists(x) के लिए `false` लौटाएं                     
--limit-file-checks        यदि कई जाँचें की जाती हैं तो फ़ोल्डर/फ़ाइल मौजूदगी जाँच के लिए डिफ़ॉल्ट मान स्विच करें 
                           (अनंत फ़ाइल जाँच लूप को तोड़ने का प्रयास करें)।                                       
--no-folder-exists         Scripting.FileSystemObject.FileExists(x) के लिए `false` लौटाएं                     
--function-rewrite         eval कॉल को पकड़ने के लिए फ़ंक्शन कॉल को पुनर्लेखन करें                             
--no-rewrite-prototype     `function A.prototype.B()` जैसे व्यंजकों को `A.prototype.B =  
                           function()` के रूप में पुनर्लेखन न करें                                                                     
--no-hoist-prototype       `function A.prototype.B()` जैसे व्यंजकों को hoist न करें (no-rewrite-prototype द्वारा निहित)                                                           
--no-shell-error           `WScriptShell.Run` निष्पादित करते समय नकली त्रुटि न फेंकें (यह डिफ़ॉल्ट रूप से एक नकली 
                           त्रुटि फेंकता है ताकि यह दिखावा करे कि वितरण साइटें डाउन हैं, जिससे
                           स्क्रिप्ट प्रत्येक साइट को पोल करने का प्रयास करेगी)                                         
--no-typeof-rewrite        `typeof` को पुनर्लेखन न करें (जैसे `typeof ActiveXObject`, जिसे JScript मानक में
                           'unknown' लौटाना चाहिए न कि 'object')                             
--proxy                    [प्रयोगात्मक] डाउनलोड के लिए निर्दिष्ट प्रॉक्सी का उपयोग करें। यह प्रासंगिक नहीं है यदि
                           `--download` फ़्लैग मौजूद नहीं है।                                             
--windows-xp               Windows XP का अनुकरण करें (पर्यावरण चर के मान को प्रभावित करता है)              
--dangerous-vm             `vm` मॉड्यूल का उपयोग करें, `vm2` के बजाय। यह सैंडबॉक्स तोड़ा जा सकता है, इसलिए **इसका उपयोग न करें**
                           जब तक कि आप 100% सुनिश्चित न हों कि आप क्या कर रहे हैं। सही स्टैक ट्रेस देकर डीबगिंग में मदद करता है।                                                    
--rewrite-loops            विश्लेषण को तेज़ बनाने के लिए कुछ प्रकार के लूपों को पुनर्लेखन करें                             
--throttle-writes          फ़ाइल लेखन की रिपोर्टिंग और डेटा ट्रैकिंग को सीमित करें जो बहुत अधिक डेटा लिखते हैं    
--throttle-commands        यदि समान कमांड बहुत अधिक चलाए गए हैं तो विश्लेषण रोक दें                   
--extract-conditional-code JScript सशर्त टिप्पणियों (/*@if(...) से विश्लेषण के लिए वास्तविक कोड निकालें।  
--loose-script-name        == जाँचों को पुनर्लेखन करें ताकि वर्तमान स्क्रिप्ट नाम की एक हार्ड कोडेड
                           स्क्रिप्ट नाम से तुलना हमेशा सत्य लौटाए।                                                 
--real-script-name         वर्तमान में विश्लेषित स्क्रिप्ट का वास्तविक फ़ाइल नाम लौटाएँ न कि नकली   
                           नाम।                                                                           
--activex-as-ioc           सभी ActiveX कॉल को IOC के रूप में लॉग करता है और यह निर्धारित करने का प्रयास करता है कि कॉल JS स्रोत में
                           अस्पष्ट है या नहीं।                                                               
--ignore-wscript-quit      WSCript.Quit() के कॉल को अनदेखा करें और निष्पादन जारी रखें।                          
--ignore-rewrite-errors    यदि कोई नमूना पुनर्लेखन विफल होता है तो मूल नमूने का विश्लेषण करें।                            

आउटपुट का विश्लेषण

कंसोल आउटपुट

जानकारी का पहला स्रोत कंसोल आउटपुट है। एक सफल विश्लेषण पर, यह आमतौर पर कुछ इस तरह प्रिंट करेगा:

root@kitploit:~
Using a 10 seconds timeout, pass --timeout to specify another timeout in seconds
Analyzing sample.js
Header set for http://foo.bar/baz: User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Emulating a GET request to http://foo.bar/baz
Downloaded 301054 bytes.
Saved sample.js.results/a0af1253-597c-4eed-9e8f-5b633ff5f66a (301054 bytes)
sample.js.results/a0af1253-597c-4eed-9e8f-5b633ff5f66a has been detected as data.
Saved sample.js.results/f8df7228-7e0a-4241-9dae-c4e1664dc5d8 (303128 bytes)
sample.js.results/f8df7228-7e0a-4241-9dae-c4e1664dc5d8 has been detected as PE32 executable (GUI) Intel 80386, for MS Windows.
http://foo.bar/baz is an active URL.
Executing sample.js.results/d241e130-346f-4c0c-a698-f925dbd68f0c in the WScript shell
Header set for http://somethingelse.com/: User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Emulating a GET request to http://somethingelse.com/
...

इस मामले में, हम एक ड्रॉपर देख रहे हैं जो http://foo.bar/baz से एक फ़ाइल डाउनलोड करता है, HTTP हेडर User-Agent को Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) पर सेट करता है। फिर, यह इसे डीकोड करता है, और परिणाम को डिस्क पर लिखता है (एक PE32 एक्जीक्यूटेबल)। अंत में, यह Windows शेल में कुछ कमांड चलाता है।

  • sample.js.results/a0af1253-597c-4eed-9e8f-5b633ff5f66a में वह पेलोड होगा जैसा http://foo.bar/baz से डाउनलोड किया गया था;
  • sample.js.results/f8df7228-7e0a-4241-9dae-c4e1664dc5d8 में वास्तविक पेलोड (PE एक्जीक्यूटेबल) होगा;
  • sample.js.results/d241e130-346f-4c0c-a698-f925dbd68f0c में वह कमांड होगा जो Windows शेल में चलाया गया था।

JSON लॉग

प्रत्येक HTTP अनुरोध टर्मिनल पर मुद्रित होता है और urls.json में लॉग किया जाता है। डुप्लिकेट URL सम्मिलित नहीं किए जाते (अर्थात एक ही URL का दो बार अनुरोध करने से urls.json में केवल एक पंक्ति होगी)।

active_urls.json में उन URL की सूची होती है जो अंततः एक एक्जीक्यूटेबल पेलोड में परिणित हुए। यदि आप वितरण साइटों को नीचे लाने की तलाश में हैं तो यह फ़ाइल सबसे दिलचस्प है।

snippets.json में box-js द्वारा पाया गया कोड का प्रत्येक टुकड़ा होता है, चाहे वह जावास्क्रिप्ट हो, cmd.exe कमांड हो या PowerShell स्क्रिप्ट हो।

resources.json में नमूने द्वारा डिस्क पर लिखी गई प्रत्येक फ़ाइल होती है। उदाहरण के लिए, यदि एप्लिकेशन ने Hello world! को $PATH/foo.txt में सहेजने का प्रयास किया, तो resources.json की सामग्री होगी:

root@kitploit:~
{
	"9a24...": {
		"path": "(path)\\foo.txt",
		"type": "ASCII text, with no line terminators",
		"md5": "86fb269d190d2c85f6e0468ceca42a20",
		"sha1": "d3486ae9136e7856bc42212385ea797094475802",
		"sha256": "c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a"
	}
}

resources.json फ़ाइल भी महत्वपूर्ण है: किसी भी एक्जीक्यूटेबल संसाधन (जैसे "type": "PE32 executable (GUI) Intel 80386, for MS Windows") के लिए सावधान रहें।

पैचिंग

जंगली में कुछ स्क्रिप्ट्स में new Date().getYear() का उपयोग देखा गया है जबकि new Date().getFullYear() का उपयोग होना चाहिए। यदि कोई नमूना कोई संदिग्ध व्यवहार नहीं दिखा रहा है, तो Date जाँचों पर ध्यान दें।


यदि आप .JSE फ़ाइलों में भाग लेते हैं, तो डिकोडर को कंपाइल करें और इसे इस प्रकार चलाएँ:

root@kitploit:~
cc decoder.c -o decoder
./decoder foo.jse bar.js
node run bar.js

विस्तार

आप कभी-कभी असमर्थित घटकों में भाग सकते हैं। इस मामले में, आप GitHub पर एक मुद्दा दर्ज कर सकते हैं, या यदि आप जावास्क्रिप्ट जानते हैं तो घटक को स्वयं अनुकरण कर सकते हैं।

त्रुटि आमतौर पर इस तरह दिखेगी (पंक्ति संख्याएँ भिन्न हो सकती हैं):

root@kitploit:~
1 Jan 00:00:00 - Unknown ActiveXObject WinHttp.WinHttpRequest.5.1
Trace
    at kill (/home/CapacitorSet/box-js/run.js:24:10)
    at Proxy.ActiveXObject (/home/CapacitorSet/box-js/run.js:75:4)
    at evalmachine.<anonymous>:1:6471
    at ContextifyScript.Script.runInNewContext (vm.js:18:15)
    at ...

आप देख सकते हैं कि अपवाद Proxy.ActiveXObject में उठाया गया था, जो इस तरह दिखता है:

root@kitploit:~
function ActiveXObject(name) {
	name = name.toLowerCase();
	/* ... */
	switch (name) {
		case "wscript.shell":
			return require("./emulator/WScriptShell");
		/* ... */
		default:
			kill(`Unknown ActiveXObject ${name}`);
			break;
	}
}

एक नया case "winhttp.winhttprequest.5.1" जोड़ें (छोटे अक्षरों में!), और इसे एक ES6 Proxy ऑब्जेक्ट (जैसे ProxiedWinHttpRequest) लौटाएँ। इसका उपयोग अकार्यान्वित सुविधाओं को पकड़ने के लिए किया जाता है जैसे ही वे दुर्भावनापूर्ण नमूने द्वारा अनुरोध की जाती हैं:

root@kitploit:~
/* emulator/WinHttpRequest.exe */
const lib = require("../lib");

module.exports = function ProxiedWinHttpRequest() {
	return new Proxy(new WinHttpRequest(), {
		get: function(target, name, receiver) {
			switch (name) {
				/* यहाँ "विशेष" trap को case statements के साथ जोड़ें */
				default:
					if (name in target) return target[name];
					else lib.kill(`WinHttpRequest.${name} not implemented!`)
			}
		}
	})
}

function WinHttpRequest() {
	
}

विश्लेषण पुनः चलाएँ: यह फिर से विफल होगा, आपको बताएगा कि वास्तव में क्या लागू नहीं किया गया था।

root@kitploit:~
1 Jan 00:00:00 - WinHttpRequest.open not implemented!
Trace
    at kill (/home/CapacitorSet/box-js/run.js:24:10)
    at Object.ProxiedWinHttpRequest.Proxy.get (/home/CapacitorSet/box-js/run.js:89:7)

आवश्यकतानुसार WinHttpRequest.open को अनुकरण करें:

root@kitploit:~
function WinHttpRequest() {
	this.open = function(method, url) {
		URLLogger(method, url);
		this.url = url;
	}
}

और तब तक दोहराएँ जब तक कोड त्रुटियों के बिना अनुकरण न हो जाए।

योगदानकर्ता

@CapacitorSet: मूल डेवलपर

@kirk-sayre-work: अनुरक्षक

@daviesjamie:

  • npm पैकेजिंग
  • कमांड-लाइन सहायता
  • --output-directory
  • बगफिक्स

@ALange:

  • गैर-UTF8 एन्कोडिंग के लिए समर्थन
  • बग रिपोर्टिंग

@alexlamsl, @kzc

  • box-js में UglifyJS एकीकृत करने पर सलाह
  • डीऑबफस्केशन में उपयोग किए जाने वाले UglifyJS की सुविधाओं में सुधार

@psrok:

  • बगफिक्स

@gaelmuller:

  • बगफिक्स
टूल डाउनलोड करें