এই পোস্টটি থেকে এটি প্রদর্শিত হয় যে FS:[0x28]
স্ট্যাক-ক্যানারি। আমি এই ফাংশনে জিসিসি ব্যবহার করে একই কোড তৈরি করছি,
void foo () {
char a[500] = {};
printf("%s", a);
}
বিশেষত, আমি এই সমাবেশটি পেয়ে যাচ্ছি ..
0x000006b5 64488b042528. mov rax, qword fs:[0x28] ; [0x28:8]=0x1978 ; '(' ; "x\x19"
0x000006be 488945f8 mov qword [local_8h], rax
...stuff...
0x00000700 488b45f8 mov rax, qword [local_8h]
0x00000704 644833042528. xor rax, qword fs:[0x28]
0x0000070d 7405 je 0x714
0x0000070f e85cfeffff call sym.imp.__stack_chk_fail ; void __stack_chk_fail(void)
; CODE XREF from 0x0000070d (sym.foo)
0x00000714 c9 leave
0x00000715 c3 ret
মান নির্ধারণ কি fs:[0x28]
? কার্নেল, বা জিসিসি কোডে নিক্ষেপ করছে? আপনি কি কার্নেলের কোডটি প্রদর্শন করতে পারেন, বা যে বাইনারি সেট করে তা সংকলন করতে পারেন fs:[0x28]
? ক্যানারিটি কি পুনরায় জেনারেট হয় - বুটে, বা প্রক্রিয়াটি স্প্যান হয়? এই নথি কোথায়?