अपनी स्क्रिप्ट संकलित करने के लिए उन्हें रक्षा नहीं करता shc का उपयोग करते हुए लिखा है है। आपको इस तरह से अधिक सुरक्षा नहीं मिलती है। Shc संकलित बाइनरी डिक्रिप्ट्स और स्क्रिप्ट शुरू होने पर स्क्रिप्ट को स्मृति में लोड करता है। तब आप बाइनरी शुरू करने के ठीक बाद, बस इसे segfault और coredump से अपनी स्क्रिप्ट पुनर्प्राप्त कर सकते हैं।
#! /bin/bash
echo "starting script and doing stuff"
sleep 1
echo "finished doing stuff"
shc के साथ संकलित करें:
shc -f test.sh
पृष्ठभूमि प्रक्रिया के रूप में यह शुरू के बाद उसे तुरंत SEGFAULT:
./test.sh.x& (sleep 0.2 && kill -SIGSEGV $!)
यह एक छोटा सा उदाहरण test.sh नामित स्क्रिप्ट है
नींद 0.2 मूल स्क्रिप्ट शुरू करने और डिक्रिप्ट करने के लिए बाइनरी पर्याप्त समय देगा। परिवर्तनीय $! आखिरी पृष्ठभूमि प्रक्रिया की पिड शुरू हुई है, इसलिए हम आसानी से सेगमेंटेशन गलती सिग्नल एसआईजीएसईजीवी (मार -11 $ के रूप में!) के साथ इसे आसानी से मार सकते हैं।
[1] + segmentation fault (core dumped) ./test.sh.x
अब हम मूल स्क्रिप्ट के लिए डंप खोज सकते हैं:
cat core | strings
हम पाइप तार करने के लिए डंपफाइल में डेटा है, जो तब हमें फ़ाइल में सभी मुद्रण योग्य पात्रों दिखाएगा और हम कर सकते हैं अब कचरा के बीच मूल स्क्रिप्ट देखें: स्क्रिप्ट बहुत बड़ी है
...
4.0.37(2)-release
BASH_VERSINFO
BASH_VERSINFO
release
i686-pc-linux-gnu
BASH_EXECUTION_STRING
BASH_EXECUTION_STRING
#! /bin/bash
echo "starting script and doing stuff"
sleep 1
echo "finished doing stuff"
1000
EUID
EUID
1000
...
हैं, तो हो सकता है आप ulimit साथ कोर फ़ाइल आकार को समायोजित करने के लिए है। बहुत आसान, है ना?
उम्मीद है कि आप अपना सबक सीखें और संस्करण नियंत्रण प्रणाली का उपयोग शुरू करें! (गिट एक महान है) – Daenyth