2015-04-17 3 views
5

प्रश्न को और समझने योग्य बनाने के लिए, नामक एक सॉफ़्टवेयर है CheatEngine, और मूल रूप से यह क्या करता है, यह उस सॉफ़्टवेयर के सभी बाइट्स को एकत्र करता है जिसे आप काम करने का प्रयास कर रहे हैं और आप इनमें से किसी भी को चुन सकते हैं और बदल सकते हैं महत्व।जावा: मैं अन्य कार्यक्रमों से मूल्य कैसे प्राप्त करूं?

उदाहरण के लिए आप किसी भी गेम के स्कोर को बदलना चाहते हैं। आप वर्तमान स्कोर के मूल्य की खोज कर सकते हैं, और जो भी आप चाहें उसे बदल सकते हैं।

अब सवाल यह है कि जावा का उपयोग करके ऐसा कुछ बनाना संभव है, जो स्मृति से सभी डेटा ले लेगा, जो सॉफ्टवेयर आप "हैक" करने का प्रयास कर रहे हैं, उपयोग करता है?

मुझे बताएं कि मुझे किन स्रोतों को देखना चाहिए।

पीएस अगर पोस्ट में व्याकरण की गलती हो गई है, तो मुझे खेद है। मैं रूस से हूं और मैं अंग्रेजी भाषा में सबसे अच्छा नहीं हूं।

+1

पर पढ़ने की कोशिश करें, जावा में, देशी विधियों के बिना, नहीं। – immibis

+0

[जावा के साथ मेमोरी एक्सेस करना] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/19418900/accessing-memory-with-java) – dit

+0

@dit: आप सही हैं, ओपी द्वारा इसका उत्तर अपेक्षित नहीं था। मेरी टिप्पणी हटा दी – LittlePanda

उत्तर

4

जावा प्रत्यक्ष स्मृति पहुंच (एक अच्छे कारण के लिए) में बहुत सीमित है, इसलिए जावा के साथ यह बहुत ही असंभव है। जेएनआई ओएस ऑपरेशंस (प्रबंधित या असुरक्षित) निष्पादित कर सकता है, इसलिए आप किसी भी सी फ़ंक्शन को कॉल करने का प्रयास कर सकते हैं जो किसी दिए गए मेमोरी लोकेशन पर डेटा लौटाता है, लेकिन मुझे लगता है कि आप पहली जगह (जावा नहीं) में सी का उपयोग करने से बेहतर होंगे, फिर।

+0

तो शायद मैं स्मृति को बदलना नहीं चाहता .. अगर मैं स्मृति को पढ़ना चाहता हूं तो क्या होगा? – user2852371

+3

@ user2852371 फिर यह उत्तर अभी भी लागू होता है, नहीं? – immibis

+0

जावा वर्चुअल मशीन के बाहर मेमोरी पढ़ने पर भी लागू होता है। – user1438038

1

भाषा परिभाषा जावा द्वारा जेवीएम में एक सैंडबॉक्स में चलता है। तो इसके बाहर स्मृति में अन्य स्थानों तक पहुंचना असंभव है। इसके अलावा जावा स्मृति में विशिष्ट पदों तक नहीं पहुंच सकता है, कोई पॉइंटर्स नहीं हैं।

+2

आप शायद 'sun.misc.Unsafe' पर पढ़ा जाना चाहिए। यह निश्चित रूप से स्मृति में विशिष्ट पदों तक पहुंच सकता है। –

+0

धन्यवाद, अब इसके बारे में पढ़ना। ऐसा लगता है कि यह जावा 9 एपीआई का हिस्सा होगा। – andreadi

-1

जैसा कि मुझे पता है कि जावा सीधे स्मृति तक पहुंचने के लिए समर्थन प्रदान नहीं करता है। यदि आप अभी भी स्मृति तक पहुंचना चाहते हैं तो आपको जेएनआई का उपयोग करना होगा। लेकिन फिर यह एक अच्छा विकल्प नहीं है। तो मुझे लगता है कि जावा पर अपने उद्देश्य के लिए छोड़ना और सी या सी ++ का उपयोग करने का सबसे अच्छा तरीका है। सी # .NET भी एक संभव होगा।

पीएस @ फिलिप व्हाइटहाउस सुझाव के रूप में sun.misc.Unsafe पैकेज के साथ एक तरीका हो सकता है। http://mishadoff.com/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/

+0

'sun.misc.Unsafe' आपको कुछ सीधी मेमोरी एक्सेस देता है। लेकिन यह स्पष्ट नहीं है कि आप जावा प्रक्रिया के बाहर स्मृति प्राप्त कर सकते हैं या नहीं। –

+0

@ फिलिप व्हाइटहाउस मुझे इससे पहले पता नहीं था। मैं इसे अपने उत्तर में जोड़ दूंगा। टिप्पणी के लिए धन्यवाद –

संबंधित मुद्दे