
Nim (https://nim-lang.org/) को हथियार बनाने में मेरे प्रयोग
इम्प्लांट विकास और सामान्य आक्रामक कार्यों के लिए Nim को हथियारबंद करने के मेरे प्रयोग।
DllMain के साथ विंडोज DLL बनाना
mingw टूलचेन स्थापित करने और nim कंपाइलर को एक फ्लैग पास करने की आवश्यकता है।| फ़ाइल | विवरण |
|---|---|
| amsi_patch_2_bin.nim | एक अलग विधि का उपयोग करके वर्तमान प्रक्रिया से AMSI को पैच करता है (WIP, सहायता की सराहना की जाती है) |
| excel_4_com_bin.nim |
यह रिपॉजिटरी बाइनरी प्रदान नहीं करती है, आपको उन्हें स्वयं कंपाइल करना होगा। यह रिपॉजिटरी लिनक्स या मैकओएस से विंडोज के लिए उदाहरण Nim स्रोत फ़ाइलों को क्रॉस-कंपाइल करने के लिए सेटअप की गई थी।
आपके लिए स्वचालित रूप से एक डेवलपमेंट एनवायरनमेंट सेटअप करने के लिए VSCode Devcontainers का उपयोग करें (देखें डेवलपमेंट एनवायरनमेंट सेट करना अनुभाग)। एक बार यह हो जाने के बाद बस make चलाएँ।
अपने सिस्टम के पैकेज मैनेजर का उपयोग करके Nim स्थापित करें (विंडोज के लिए आधिकारिक वेबसाइट पर इंस्टॉलर का उपयोग करें)
brew install nimapt install nimchoco install nim(Nim Dockerhub पर एक डॉकर इमेज भी प्रदान करता है)
अब आपके पास nim और nimble कमांड उपलब्ध होने चाहिए, पहला Nim कंपाइलर है और दूसरा Nim का पैकेज मैनेजर है।
विंडोज के लिए क्रॉस-कंपाइलेशन के लिए आवश्यक Mingw टूलचेन स्थापित करें (यदि आप विंडोज पर कंपाइल कर रहे हैं तो आवश्यक नहीं):
apt-get install mingw-w64brew install mingw-w64अंत में, शानदार Winim लाइब्रेरी, zippy और nimcrypto स्थापित करें।
nimble install winim zippy nimcryptoफिर इस रिपॉजिटरी के रूट में cd करें और make चलाएँ।
आपको बाइनरी और dlls bin/ डायरेक्टरी में मिलने चाहिए।
अधिक विवरण के लिए Nim कंपाइलर उपयोग गाइड में क्रॉस-कंपाइलेशन अनुभाग देखें।
MacOs/*nix से विंडोज में क्रॉस कंपाइल करने के लिए mingw टूलचेन की आवश्यकता होती है, आमतौर पर बस brew install mingw-w64 या apt install mingw-w64 करें।
फिर आपको nim कंपाइलर को -d=mingw फ्लैग पास करना होगा।
जैसे nim c -d=mingw --app=console --cpu=amd64 source.nim
Nim मैनुअल में पागल FFI अनुभाग देखें।
यदि आप csharp के P/Invoke से परिचित हैं, तो यह मूल रूप से वही अवधारणा है, हालांकि यह थोड़ा बदसूरत दिखता है:
MessageBox को कॉल करने का उदाहरण```nim
type
HANDLE* = int
HWND* = HANDLE
UINT* = int32
LPCSTR* = cstring
proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32 {.discardable, stdcall, dynlib: "user32", importc: "MessageBoxA".}
MessageBox(0, "Hello, world !", "Nim is Powerful", 0)
For any complex Windows API calls use the [Winim library](https://github.com/khchen/winim), saves an insane amount of time and doesn't add too much to the executable size (see below) depending on how you import it.
Even has COM support!!!
## Creating Windows DLLs with an exported `DllMain`
Big thanks to the person who posted [this](https://forum.nim-lang.org/t/1973) on the Nim forum.
The Nim compiler tries to create a `DllMain` function for you automatically at compile time whenever you tell it to create a windows DLL, however, it doesn't actually export it for some reason. In order to have an exported `DllMain` you need to pass `--nomain` and define a `DllMain` function yourself with the appropriate pragmas (`stdcall, exportc, dynlib`).
You need to also call `NimMain` from your `DllMain` to initialize Nim's garbage collector. (Very important, otherwise your computer will literally explode).
Example:```nim
import winim/lean
proc NimMain() {.cdecl, importc.}
proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpvReserved: LPVOID) : BOOL {.stdcall, exportc, dynlib.} =
NimMain()
if fdwReason == DLL_PROCESS_ATTACH:
MessageBox(0, "Hello, world !", "Nim is Powerful", 0)
return true
संकलित करने के लिए:``` nim c -d=mingw --app=lib --nomain --cpu=amd64 mynim.dll
### XLLs बनाना
आप एक XLL (एक Excel DLL, सोचिए) बना सकते हैं जिसमें एक स्वतः खुलने वाला फंक्शन होता है जिसका उपयोग पेलोड डिलीवरी के लिए किया जा सकता है। निम्नलिखित कोड एक सरल XLL बनाता है जिसमें एक स्वतः खुलने वाला फंक्शन और लिंक लाइब्रेरी के रूप में संकलित करने के लिए आवश्यक अन्य सभी बॉयलरप्लेट कोड होते हैं। POC एक DLL के रूप में संकलित होता है, फिर आप एक्सटेंशन को .xll में बदल सकते हैं और जब डबल क्लिक किया जाएगा तो यह Excel में खुलेगा और पेलोड चलाएगा:```nim
#[
Compile:
nim c -d=mingw --app=lib --nomain --cpu=amd64 nim_xll.nim
Will compile as a DLL, you can then just change the extension to .xll
]#
import winim/lean
proc xlAutoOpen() {.stdcall, exportc, dynlib.} =
MessageBox(0, "Hello, world !", "Nim is Powerful", 0)
proc NimMain() {.cdecl, importc.}
proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpvReserved: LPVOID) : BOOL {.stdcall, exportc, dynlib.} =
NimMain()
return true
XLLs के साथ कई और चालाक चीज़ें की जा सकती हैं। यहाँ XLL ट्रेडक्राफ्ट के और उदाहरण देखें.
Nim के FAQ पृष्ठ से लिया गया
सबसे बड़े आकार में कमी के लिए निम्नलिखित फ़्लैग का उपयोग करें -d:danger -d:strip --opt:size
इसके अतिरिक्त, मैंने पाया है कि आप कंपाइलर को --passc=-flto --passl=-flto पास करके कुछ और बाइट्स कम कर सकते हैं। इस रिपॉजिटरी में Makefile भी देखें।
ये फ़्लैग आकार को नाटकीय रूप से कम करते हैं: MacOSX से क्रॉस-कंपाइल करने पर शेलकोड इंजेक्शन उदाहरण 484.3 KB से घटकर 46.5 KB हो जाता है!
इसका पता लगाने के लिए @Shitsecure को बहुत-बहुत धन्यवाद!
डिफ़ॉल्ट रूप से, Nim PE को रिलोकेशन टेबल के साथ उत्पन्न नहीं करता है, जो कि अधिकांश टूल्स के लिए आवश्यक है जो EXE को रिफ्लेक्टिवली लोड करते हैं।
रिलोकेशन सेक्शन के साथ एक निम एक्ज़ीक्यूटेबल उत्पन्न करने के लिए आपको लिंकर को कुछ अतिरिक्त फ़्लैग पास करने होंगे।
विशेष रूप से: --passL:-Wl,--dynamicbase
पूर्ण उदाहरण कमांड:``` nim c --passL:-Wl,--dynamicbase my_awesome_malwarez.nim
## Winim लाइब्रेरी के उपयोग बनाम बिना उपयोग के निष्पादन योग्य आकार का अंतर
अविश्वसनीय रूप से, आकार का अंतर काफी नगण्य है। विशेष रूप से जब आप ऊपर बताए गए आकार अनुकूलन लागू करते हैं।
इस उद्देश्य के लिए दो उदाहरण `pop_bin.nim` और `pop_winim_bin.nim` बनाए गए हैं।
पहला मैन्युअल रूप से `MessageBox` WinAPI कॉल को परिभाषित करता है और दूसरा Winim लाइब्रेरी (विशेष रूप से `winim/lean` जो केवल मुख्य SDK है, [यहाँ](https://github.com/khchen/winim#usage) देखें) का उपयोग करता है, परिणाम:```
byt3bl33d3r@ecl1ps3 OffensiveNim % ls -lah bin
-rwxr-xr-x 1 byt3bl33d3r 25K Nov 20 18:32 pop_bin_32.exe
-rwxr-xr-x 1 byt3bl33d3r 32K Nov 20 18:32 pop_bin_64.exe
-rwxr-xr-x 1 byt3bl33d3r 26K Nov 20 18:33 pop_winim_bin_32.exe
-rwxr-xr-x 1 byt3bl33d3r 34K Nov 20 18:32 pop_winim_bin_64.exe
यदि आप import winim/com के साथ संपूर्ण Winim लाइब्रेरी आयात करते हैं, तो यह केवल लगभग ~20ish KB जोड़ता है, जो कि इसके द्वारा अमूर्त की गई कार्यक्षमता की मात्रा को ध्यान में रखते हुए उस अतिरिक्त आकार के लिए 100% उपयुक्त है:```
byt3bl33d3r@ecl1ps3 OffensiveNim % ls -lah bin
-rwxr-xr-x 1 byt3bl33d3r 42K Nov 20 19:20 pop_winim_bin_32.exe
-rwxr-xr-x 1 byt3bl33d3r 53K Nov 20 19:20 pop_winim_bin_64.exe
## Opsec Considerations
क्योंकि Nim `LoadLibrary` का उपयोग करके DLL को गतिशील रूप से हल करता है, इसकी FFI का उपयोग करते हुए, आपके सभी बाहरी आयातित फ़ंक्शन वास्तव में एक्ज़ीक्यूटेबल के स्थिर आयात में दिखाई नहीं देंगे (इसके बारे में अधिक जानकारी के लिए [यह ब्लॉग पोस्ट](https://web.archive.org/web/20210117002945/https://secbytes.net/implant-roulette-part-1:-nimplant/) देखें):

यदि आप Nim स्रोत को DLL में संकलित करते हैं, तो ऐसा लगता है कि आपके पास हमेशा एक निर्यातित `NimMain` होगा, चाहे आप अपना स्वयं का `DllMain` निर्दिष्ट करें या नहीं (??)। इसका उपयोग संभावित रूप से एक हस्ताक्षर के रूप में किया जा सकता है, पता नहीं कितनी कंपनियाँ वास्तव में अपने डेवलपमेंट स्टैक में Nim का उपयोग कर रही हैं। निश्चित रूप से अलग दिखता है।

## Nim रनटाइम के बिना Nim लिखना
चूंकि Nim एंटी-वायरस समाधानों द्वारा भारी रूप से फ्लैग किया जाता है, इससे बचने का एक तरीका Nim रनटाइम के बिना Nim प्रोग्राम लिखना है। [Writing Nim-less Nim](https://www.youtube.com/watch?v=EXX3HmCG3pw) एक व्याख्यान है जो Nim कोड को Nim और C रनटाइम के बिना लिखने के चरणों को रेखांकित करता है, इस व्याख्यान का स्रोत कोड [यहाँ](https://github.com/m4ul3r/writing_nimless) उपलब्ध है। यह व्याख्यान [zimawhit3's](https://github.com/zimawhit3) के [Bitmancer](https://github.com/zimawhit3/Bitmancer/tree/main) के काम का अनुसरण और विस्तार करता है।
मूल आधार `winim` के प्रकार परिभाषाओं पर निर्भर करना और ऐसा कोड लिखना है जिसके परिणामस्वरूप Nim का रनटाइम उपयोग न हो।
## C कोड को Nim में बदलना
https://github.com/nim-lang/c2nim
इसका उपयोग छोटे C स्निपेट के गुच्छों को अनुवाद करने के लिए किया, कुछ बड़ा करने की कोशिश नहीं की।
## भाषा ब्रिज
- Python एकीकरण https://github.com/yglukhov/nimpy
* यह वास्तव में बेहद दिलचस्प है, [विशेष रूप से यह भाग](https://github.com/yglukhov/nimpy/blob/master/nimpy/py_lib.nim#L330)। कुछ संशोधनों के साथ क्या यह PythonxXX.dll को मेमोरी से लोड कर सकता है?
- Jave VM एकीकरण: https://github.com/yglukhov/jnim
## डिबगिंग
`echo` के साथ `repr()` फ़ंक्शन का उपयोग करें, यह लगभग सभी (??) डेटा प्रकारों, यहाँ तक कि स्ट्रक्ट्स का भी समर्थन करता है!
अधिक जानकारी के लिए [यह ब्लॉग पोस्ट](https://nim-lang.org/blog/2017/10/02/documenting-profiling-and-debugging-nim-code.html) देखें
## डेवलपमेंट एनवायरनमेंट सेट करना
यह रिपॉजिटरी [VSCode Devcontainers](https://code.visualstudio.com/docs/remote/create-dev-container) का समर्थन करती है, जो आपको Docker कंटेनर में डेवलप करने की अनुमति देता है। यह आपके लिए डेवलपमेंट एनवायरनमेंट सेट करने की प्रक्रिया को स्वचालित करता है।
1. VSCode और Docker Desktop इंस्टॉल करें
2. इस रिपो को क्लोन करें और इसे VSCode में खोलें
3. `Visual Studio Code Remote - Containers` एक्सटेंशन इंस्टॉल करें
4. कमांड पैलेट खोलें और `Remote-Containers: Reopen in Container` कमांड चुनें
VScode अब Docker इमेज बनाएगा (थोड़ा समय लगेगा) और आपको सीधे आपके पूर्व-निर्मित Nim डेवलपमेंट एनवायरनमेंट में डाल देगा!
## मैंने स्वयं जो गलतियाँ कीं
- Winim के साथ winapi को कॉल करते समय और null मान पास करने की कोशिश करते समय, सुनिश्चित करें कि आप `NULL` मान (Winim लाइब्रेरी में परिभाषित) पास करें, न कि Nim के अंतर्निहित `nil` मान को। (उफ़)
- विंडोज़ पर `open()` कॉल करने के बाद बनाई गई फ़ाइल का OS हैंडल प्राप्त करने के लिए, आपको `f.getOsFileHandle()` का उपयोग करना होगा, **न कि** `f.getFileHandle()` का, क्योंकि कारण।
- Nim कंपाइलर `-a=value` या `--arg=value` के रूप में आर्गुमेंट स्वीकार करता है, भले ही उपयोग देखने पर केवल `-a:value` या `--arg:value` के रूप में आर्गुमेंट दिखते हों। (Makefiles के लिए महत्वपूर्ण)
- बाइट सरणी को परिभाषित करते समय, आपको कम से कम पहले मान में यह इंगित करने की भी आवश्यकता है कि यह एक बाइट सरणी है, थोड़ा अजीब लेकिन ठीक है (https://forum.nim-lang.org/t/4322)
C# में बाइट सरणी:```csharp
byte[] buf = new byte[5] {0xfc,0x48,0x81,0xe4,0xf0,0xff}
Nim में बाइट ऐरे:```nim var buf: array[5, byte] = [byte 0xfc,0x48,0x81,0xe4,0xf0,0xff]
## रोचक निम लाइब्रेरी
- https://github.com/dom96/jester
- https://github.com/pragmagic/karax
- https://github.com/Niminem/Neel
- https://github.com/status-im/nim-libp2p
- https://github.com/PMunch/libkeepass
- https://github.com/def-/nim-syscall
- https://github.com/tulayang/asyncdocker
- https://github.com/treeform/ws
- https://github.com/guzba/zippy
- https://github.com/rockcavera/nim-iputils
- https://github.com/FedericoCeratto/nim-socks5
- https://github.com/CORDEA/backoff
- https://github.com/treeform/steganography
- https://github.com/miere43/nim-registry
- https://github.com/status-im/nim-daemon
## इम्प्लांट डेव के लिए निम लिंक
- https://web.archive.org/web/20210117002945/https://secbytes.net/implant-roulette-part-1:-nimplant/
- https://securelist.com/zebrocys-multilanguage-malware-salad/90680/
- https://github.com/MythicAgents/Nimplant
- https://github.com/elddy/Nim-SMBExec
- https://github.com/elddy/NimScan
## योगदानकर्ता
सभी योगदानकर्ताओं को आभासी गले लगाना ❤️
<a href="https://github.com/byt3bl33d3r/OffensiveNim/graphs/contributors">
<img src="https://contrib.rocks/image?repo=byt3bl33d3r/OffensiveNim" />
</a>
| फ़ाइल | विवरण |
|---|
| pop_bin.nim | Winim लाइब्रेरी का उपयोग किए बिना MessageBox WinApi को कॉल करें |
| pop_winim_bin.nim | Winim लाइब्रेरी के साथ MessageBox को कॉल करें |
| pop_winim_lib.nim | निर्यातित DllMain के साथ विंडोज DLL बनाने का उदाहरण |
| execute_assembly_bin.nim | CLR होस्ट करता है, मेमोरी से .NET असेंबली को रिफ्लेक्टिवली निष्पादित करता है |
| clr_host_cpp_embed_bin.nim | सीधे C++ कोड एम्बेड करके CLR होस्ट करता है, डिस्क से .NET असेंबली निष्पादित करता है |
| scshell_c_embed_bin.nim | मौजूदा C कोड को Nim में सीधे एम्बेड करके SCShell (C) को जल्दी से हथियारबंद करने का तरीका दिखाता है |
| fltmc_bin.nim | सभी Minifilter ड्राइवरों की गणना करता है |
| blockdlls_acg_ppid_spoof_bin.nim | एक निलंबित प्रक्रिया बनाता है जो अपने PPID को explorer.exe से स्पूफ करता है, BlockDLLs और ACG भी सक्षम करता है |
| named_pipe_client_bin.nim | नेम्ड पाइप क्लाइंट |
| named_pipe_server_bin.nim | नेम्ड पाइप सर्वर |
| embed_rsrc_bin.nim | कंपाइल समय पर एक संसाधन (zip फ़ाइल) एम्बेड करता है और रनटाइम पर सामग्री निकालता है |
| self_delete_bin.nim | लॉक या वर्तमान में चल रहे एक्जीक्यूटेबल को डिस्क पर हटाने का एक तरीका। @jonasLyk द्वारा खोजी गई विधि |
| encrypt_decrypt_bin.nim | Nimcrypto लाइब्रेरी का उपयोग करके AES256 (CTR मोड) का उपयोग करके एन्क्रिप्शन/डिक्रिप्शन |
| amsi_patch_bin.nim | वर्तमान प्रक्रिया से AMSI को पैच करता है |
| amsi_providerpatch_bin.nim | AMSI प्रदाता DLL (इस मामले में MpOav.dll) को पैच करता है ताकि AMSI को बायपास किया जा सके। यहाँ प्रकाशित |
| etw_patch_bin.nim | वर्तमान प्रक्रिया से ETW को पैच करता है (द्वारा योगदान) |
| wmiquery_bin.nim | WMI का उपयोग करके चल रही प्रक्रियाओं और स्थापित AV की क्वेरी करता है |
| out_compressed_dll_bin.nim | एक प्रबंधित dll को मेमोरी में लोड करने के लिए PowerShell कोड को कंप्रेस, बेस-64 एनकोड और आउटपुट करता है। मूल PowerSploit स्क्रिप्ट का Nim में पोर्ट। |
| dynamic_shellcode_local_inject_bin.nim | एक सरणी में हार्डकोड करने के बजाय गतिशील रूप से पुनर्प्राप्त शेलकोड को स्थानीय रूप से इंजेक्ट करने के लिए POC। |
| shellcode_callback_bin.nim | कॉलबैक फ़ंक्शन का उपयोग करके शेलकोड निष्पादित करता है |
| shellcode_bin.nim | एक निलंबित प्रक्रिया बनाता है और VirtualAllocEx/CreateRemoteThread के साथ शेलकोड इंजेक्ट करता है। आर्क, ओएस आदि का पता लगाने के लिए कंपाइल समय परिभाषाओं के उपयोग को भी प्रदर्शित करता है। |
| shellcode_fiber.nim | फाइबर के माध्यम से शेलकोड निष्पादन |
| shellcode_inline_asm_bin.nim | इनलाइन असेंबली का उपयोग करके शेलकोड निष्पादित करता है |
| ssdt_dump.nim | अपवाद निर्देशिका से रनटाइम फ़ंक्शन तालिका का उपयोग करके सरल SSDT पुनर्प्राप्ति। MDSEC लेख से प्रेरित तकनीक |
| syscalls_bin.nim | प्रत्यक्ष सिस्टम कॉल करने का तरीका दिखाता है |
| execute_powershell_bin.nim | CLR होस्ट करता है और एक अनप्रबंधित रनस्पेस के माध्यम से PowerShell निष्पादित करता है |
| passfilter_lib.nim | पासवर्ड कॉम्प्लेक्सिटी फ़िल्टर का (दुरुपयोग) करके पासवर्ड परिवर्तनों को एक फ़ाइल में लॉग करें |
| minidump_bin.nim | MiniDumpWriteDump का उपयोग करके lsass की मेमोरी डंप बनाता है |
| http_request_bin.nim | HTTP अनुरोध करने के कुछ तरीकों का प्रदर्शन करता है |
| execute_sct_bin.nim | GetObject() के माध्यम से .sct फ़ाइल निष्पादन |
| scriptcontrol_bin.nim | MSScriptControl COM ऑब्जेक्ट का उपयोग करके गतिशील रूप से VBScript और JScript निष्पादित करें |
| excel_com_bin.nim | Excel COM ऑब्जेक्ट और मैक्रोज़ का उपयोग करके शेलकोड इंजेक्ट करता है |
| keylogger_bin.nim | SetWindowsHookEx का उपयोग करके कीलॉगर |
| memfd_python_interpreter_bin.nim | एक बाइनरी को एक अनाम फ़ाइल में लोड करने और execve syscall के साथ निष्पादित करने के लिए memfd_create syscall का उपयोग करें। |
| uuid_exec_bin.nim | UUID सरणी से शेलकोड को हीप स्पेस में रोपित करता है और शेलकोड को निष्पादित करने के लिए EnumSystemLocalesA कॉलबैक का उपयोग करता है। |
| unhookc.nim | EDR/AV हुक से बचने के लिए ntdll.dll को अनहुक करता है (C कोड टेम्पलेट को ired.team से एम्बेड करता है) |
| unhook.nim | EDR/AV हुक से बचने के लिए ntdll.dll को अनहुक करता है (शुद्ध निम कार्यान्वयन) |
| taskbar_ewmi_bin.nim | शेलकोड को निष्पादित करने के लिए टास्कबार की रनिंग एप्लिकेशन संपत्ति के माध्यम से एक्स्ट्रा विंडो मेमोरी इंजेक्शन का उपयोग करता है। |
| fork_dump_bin.nim | fork() के विंडोज कार्यान्वयन का (दुरुपयोग) करता है और PROCESS_CREATE_PROCESS एक्सेस अधिकार का उपयोग करके एक दूरस्थ प्रक्रिया का हैंडल प्राप्त करता है। फिर यह MiniDumpWriteDump() का उपयोग करके फोर्क की गई प्रक्रियाओं की मेमोरी डंप करने का प्रयास करता है। |
| ldap_query_bin.nim | ADO के ADSI प्रदाता का उपयोग करके COM के माध्यम से LDAP क्वेरी करें |
| sandbox_process_bin.nim | यह किसी प्रक्रिया को उसकी इंटीग्रिटी लेवल को अविश्वसनीय पर सेट करके और महत्वपूर्ण टोकन हटाकर सैंडबॉक्स करता है। इसका उपयोग PPL प्रक्रिया (जैसे AV/EDR) को "चुपचाप अक्षम" करने के लिए किया जा सकता है। |
| list_remote_shares.nim | वर्तमान उपयोगकर्ता द्वारा सुलभ शेयर को सूचीबद्ध करने के लिए NetShareEnum का उपयोग करें |
| chrome_dump_bin.nim | Chrome के sqlite डेटाबेस से कुकीज़ पढ़ें और डिक्रिप्ट करें |
| suspended_thread_injection.nim | निलंबित थ्रेड इंजेक्शन के माध्यम से शेलकोड निष्पादन |
| dns_exfiltrate.nim | TXT रिकॉर्ड क्वेरी के माध्यम से सरल DNS एक्सफिल्ट्रेशन |
| rsrc_section_shellcode.nim | बाइनरी के .rsrc सेक्शन में एम्बेडेड शेलकोड निष्पादित करें |
| token_steal_cmd.nim | एक टोकन चुराएं/प्रतिरूपित करें और फिर एक कमांड चलाएं |
| anti_analysis_isdebuggerpresent.nim | सरल एंटी-विश्लेषण जो डीबगर की जांच करता है |
| sandbox_domain_check.nim | सरल सैंडबॉक्स से बचने की तकनीक, जो जांचती है कि कंप्यूटर डोमेन से जुड़ा है या नहीं |
| Hook.nim | MessageBoxA के लिए आक्रामक हुकिंग उदाहरण |
| anti_debug.nim | दो एंटी डीबगिंग तकनीकों का प्रदर्शन |
| anti_debug_via_tls.nim | TLS के माध्यम से एंटी-डीबगिंग |
| local_pe_execution.nim | मेमोरी में exe और dll फ़ाइलें निष्पादित करें |
| stack_string_allocation.nim | सरणियों का उपयोग करके स्टैक पर c और वाइड स्ट्रिंग आवंटित करें |
| hardware_breakpoints.nim | हार्डवेयर ब्रेकपॉइंट का उपयोग करके फ़ंक्शन को हुक करें |
| Excel COM ऑब्जेक्ट और Excel 4 मैक्रोज़ का उपयोग करके शेलकोड इंजेक्ट करता है (WIP) |