
DLL साइडलोडिंग/प्रॉक्सिंग Nim के साथ!
यह रिपॉजिटरी आपको आसानी से Nim DLL जनरेट करने की सुविधा देती है जिन्हें आप साइडलोडिंग/प्रॉक्सी लोडिंग के लिए उपयोग कर सकते हैं। यदि आप DLL साइडलोडिंग से परिचित नहीं हैं, तो इस ब्लॉग पोस्ट पर एक नज़र डालें।
जिस वैध DLL (या कई DLL) को आप प्रॉक्सी करना चाहते हैं, उसे इस रिपॉजिटरी के build निर्देशिका में रखें और फिर make चलाएँ।
यह out निर्देशिका में दो .dll जनरेट करेगा:
यदि साइडलोडिंग सफल होती है, तो आपको एक मैसेज बॉक्स पॉपअप और/या डेस्कटॉप पर लिखी गई एक फ़ाइल दिखनी चाहिए।
पेलोड को वास्तव में "हथियार" बनाने के लिए, आप विचारों और तैयार-से-उपयोग कोड स्निपेट्स के लिए OffensiveNim रिपॉजिटरी देख सकते हैं :)।
dllproxy.nim प्रॉक्सी DLL है जो आपके पेलोड को निष्पादित करेगा और वैध फ़ंक्शन कॉल्स को मूल DLL(s) में प्रॉक्सी करेगाgen_def.py मूल DLL की एक्सपोर्ट तालिका को पार्स करता है और एक मॉड्यूल-परिभाषा (.def) फ़ाइल जनरेट करता है।फिर .def फ़ाइल को कंपाइल समय पर लिंकर को पास किया जाता है ताकि वैध फ़ंक्शन कॉल्स को प्रॉक्सी किया जा सके।
NimMain छिपाएँयह Microsoft लेख देखें
इस .def फ़ाइल की अंतिम पंक्ति पर ध्यान दें:
EXPORTS
GetFileVersionInfoA=ZCnerzNI.GetFileVersionInfoA @1
GetFileVersionInfoByHandle=ZCnerzNI.GetFileVersionInfoByHandle @2
GetFileVersionInfoExA=ZCnerzNI.GetFileVersionInfoExA @3
GetFileVersionInfoExW=ZCnerzNI.GetFileVersionInfoExW @4
GetFileVersionInfoSizeA=ZCnerzNI.GetFileVersionInfoSizeA @5
GetFileVersionInfoSizeExA=ZCnerzNI.GetFileVersionInfoSizeExA @6
GetFileVersionInfoSizeExW=ZCnerzNI.GetFileVersionInfoSizeExW @7
GetFileVersionInfoSizeW=ZCnerzNI.GetFileVersionInfoSizeW @8
GetFileVersionInfoW=ZCnerzNI.GetFileVersionInfoW @9
VerFindFileA=ZCnerzNI.VerFindFileA @10
VerFindFileW=ZCnerzNI.VerFindFileW @11
VerInstallFileA=ZCnerzNI.VerInstallFileA @12
VerInstallFileW=ZCnerzNI.VerInstallFileW @13
VerLanguageNameA=ZCnerzNI.VerLanguageNameA @14
VerLanguageNameW=ZCnerzNI.VerLanguageNameW @15
VerQueryValueA=ZCnerzNI.VerQueryValueA @16
VerQueryValueW=ZCnerzNI.VerQueryValueW @17
NimMain @19 NONAME PRIVATE
यह अंतिम पंक्ति मूल रूप से लिंकर को NimMain फ़ंक्शन का नाम हटाने के लिए कहती है। DLL को कंपाइल करके और उपरोक्त .def फ़ाइल को लिंकर को पास करने पर, यदि हम .dll की एक्सपोर्ट तालिका देखें, तो निम्न एंट्री मिलती है:
