सुरक्षा कक्षा के लिए असाइनमेंट के रूप में, मैं अपने कोड में __asm__("jmp 0xbffff994");
का उपयोग करने की कोशिश कर रहा हूं, लेकिन जब मैं gdb में चीजों को अलग करता हूं, तो निर्देश jmp 0xc8047e2a
में बदल जाता है। कोई विचार क्यों मैं और किसी विशेष पते पर कैसे जा सकता हूं?x86 एक पते पर जाएं
उत्तर
शायद क्योंकि यह किसी रिश्तेदार पते पर कूद रहा है, और लिंकर या लोडर ने आपका कोड ले जाया है। एक चर में पता लगाने की कोशिश करें, और उसके बाद कार्य करें:
jmp dword [var]
या वैकल्पिक रूप से:
push 0xbffff994
ret
डैनियल बताता है कि आपकी कूद एक जैसी प्रोग्राम क्यों नहीं है। इसे ऑब्जेक्ट फाइलों और लिंकिंग के साथ करना है।
यदि आप किसी विशेष पते पर कूदना चाहते हैं, तो डीबगर या डिस्सेबलर का उपयोग करके कूदना सबसे अच्छा है।
अपने सिस्टम पर (जीसीसी संस्करण 4.2.4, उबंटू) इस disassmbley (अंतर्दृष्टि) पर ठीक लग रहा है :
disassmbley कीint main() { asm("jmp 0xbffff994"); return 0; };
परिणाम (अंतर्दृष्टि):
0x8048344 : lea 0x4(%esp),%ecx - 0x8048348 : and $0xfffffff0,%esp - 0x804834b : pushl -0x4(%ecx) - 0x804834e : push %ebp - 0x804834f : mov %esp,%ebp - 0x8048351 : push %ecx - 0x8048352 : jmp 0xbffff994 - 0x8048357 : mov $0x0,%eax - 0x804835c : pop %ecx - 0x804835d : pop %ebp - 0x804835e : lea -0x4(%ecx),%esp - 0x8048361 : ret
मुझे लगता है कि यह डिस्सेबलर jmp का ऑफ़सेट दिखा रहा है और इसका वास्तविक लक्ष्य नहीं है। (जब आप इसे 32-बिट तत्काल ऑपरेंड देते हैं तो jmp निर्देश ईप के सापेक्ष ऑफसेट लेता है)। –
आप इसका अनुमान क्यों लगाएंगे? क्या इसका परीक्षण करने का कोई तरीका है? यह नीचे जीडीबी के साथ एक ग्राफिकल इंटरफ़ेस के रूप में चल रहा है। –
या यह हो सकता है कि कोई स्थानांतरण नहीं है। हालांकि, अगर आप असेंबली के साथ ऑपकोड डंप करते हैं तो आप ऑफ़सेट देख पाएंगे। – Mark
संकलन समय पर सटीक पता निर्धारित करना मुश्किल है, क्या आपने लेबल का उपयोग करने का प्रयास किया है? Jmp के साथ उनका उपयोग करना बहुत आम है।
उदाहरण:
start:
jmp exit
exit:
ret
मैं एक हेक्स संपादक का उपयोग और बस मान परिवर्तित करता है, तो यह सिर्फ एक बार की बात है की सिफारिश करेंगे।
- 1. "अमान्य पते पर जाएं" द्वारा valgrind का अर्थ क्या है?
- 2. नोटपैड ++ परिभाषा पर जाएं
- 3. UITableView सेल पर जाएं
- 4. जावास्क्रिप्ट - एंकर पर जाएं
- 5. विम: बफर पर जाएं?
- 6. आईफोन पर जाएं
- 7. java.util। XMLGregorianCalendar पर जाएं
- 8. विधि घोषणा पर जाएं
- 9. एक x86 सिस्टम
- 10. पिछला पृष्ठ पर वापस जाएं
- 11. विम - पिछले स्थान पर जाएं
- 12. मोंगोस - अगले तत्व पर जाएं
- 13. पिछले पृष्ठ पर वापस जाएं
- 14. ग्रहण "परिभाषा पर जाएं" समस्या
- 15. jQuery.draggable() - बटन पर वापस जाएं
- 16. रीडलाइन पर जाएं -> स्ट्रिंग
- 17. परिभाषा पर जाएं gedit प्लगइन
- 18. एंड्रॉइड - सेटिंग स्क्रीन पर जाएं
- 19. x86
- 20. x86
- 21. AVQueuePlayer पर पिछला AVPlayerItem पर जाएं/कतार
- 22. x86
- 23. x86
- 24. x86
- 25. x64 पर TypeLoadException लेकिन x86 पर स्ट्रक्चरलेआउट
- 26. x86
- 27. x86
- 28. एक पेज में जाएं बटन
- 29. x86
- 30. x86 पर कौन सा पता निष्पादित करना शुरू करता है?
क्यों आपको बिल्ली को कच्चे पते पर कूदने की आवश्यकता है? मुझे इसके लिए किसी भी संभावित (गैर-घृणास्पद) उपयोग को समझने में कठिनाई हो रही है। – kquinn
आप किस प्रणाली का उपयोग करते हैं? –
@kquinn परवाह किए बिना, उनके प्रश्न पूछे गए हैं, आइए इसका उत्तर देने का प्रयास करें। – samoz