এএসএলআর চালু থাকা সত্ত্বেও কেন __libc_start_main এর ঠিকানা সবসময় জিডিবির ভিতরে থাকে?


16
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/firstlove/projects/org-ioslide/example/a.out 

Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/firstlove/projects/org-ioslide/example/a.out 

Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
(gdb) Quit
(gdb) quit
A debugging session is active.

        Inferior 1 [process 16372] will be killed.

Quit anyway? (y or n) y
firstlove-pc% cat /proc/sys/kernel/randomize_va_space
2

আইআইইউসি, এএসএলআর এর একটি ঠিকানা সহ সমস্ত ঠিকানা এলোমেলো করে দেওয়া উচিত libc.soতবে আমি খুঁজে পেলাম যে ঠিকানাটি __libc_start_main()সর্বদা 0x00007ffff7de8060আমার লিনাক্স মেশিনে থাকে কেন? কি সমস্যা?


1
ঠিকানা স্পেস র্যান্ডমাইজেশন কি ফাংশন ঠিকানাগুলি বা কেবলমাত্র ভেরিয়েবলগুলির এলোমেলো করে তোলে?
রুবেনভ

আপনি একই জিডিবি সেশনে প্রোগ্রামটি পুনরায় চালু করার পরিবর্তে ঠিকানাটি পরীক্ষা করতে কোনও নতুন জিডিবি সেশন শুরু করলে আপনি কি একই ফলাফল দেখতে পাচ্ছেন?
জন বলিঞ্জার

@JohnBollinger আমি স্পষ্টভাবে চেষ্টা করেছি
陳力

উত্তর:


24

আপনি যখন কোনও প্রোগ্রাম ভিতরে নিয়ে যান gdb, gdbঠিকানা র্যান্ডমাইজেশন অক্ষম করে ডিবাগিংয়ে আপনাকে সহায়তা করার চেষ্টা করে। এটি সক্ষম করতে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন (প্রোগ্রামটির পরবর্তী রান থেকে কার্যকর):

set disable-randomization off
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.