คำถามติดแท็ก compiler

4
วิธีรวบรวมคอมไพเลอร์ C ตั้งแต่เริ่มต้นจากนั้นคอมไพล์ Unix / Linux จากศูนย์
สมมติว่าฉันทำงานให้กับองค์กรบริการขนาดใหญ่นอกสหรัฐอเมริกา / สหราชอาณาจักร เราใช้เซิร์ฟเวอร์ UNIX และ Linux อย่างกว้างขวาง การอ่านบทความนี้ระบุว่าเป็นการง่ายที่จะแทรกแบ็คดอร์ในคอมไพเลอร์ C จากนั้นโค้ดใด ๆ ที่คอมไพล์ด้วยคอมไพเลอร์นั้นจะมีแบ็คดอร์ จากการรั่วไหลเมื่อเร็ว ๆ นี้เกี่ยวกับคำสั่งของ NSA / GCHQ ที่จะทำให้แบ็คดอร์ / จุดอ่อนในวิธีการเข้ารหัสฮาร์ดแวร์และซอฟต์แวร์ทั้งหมดคอมไพเลอร์กลายเป็นจุดสำคัญของความล้มเหลว ศักยภาพการกระจาย UNIX / Linix มาตรฐานทั้งหมดอาจถูกบุกรุก เราไม่สามารถที่จะมีระบบข้อมูลและข้อมูลลูกค้าของเราที่ถูกโจมตีโดยรัฐบาลโกง รับข้อมูลนี้ฉันต้องการสร้างคอมไพเลอร์ที่เชื่อถือได้ตั้งแต่เริ่มต้นแล้วฉันมีฐานที่ปลอดภัยในการสร้างดังนั้นฉันจึงสามารถสร้างระบบปฏิบัติการและแอปพลิเคชันจากซอร์สโค้ดโดยใช้คอมไพเลอร์นั้น คำถาม อะไรคือวิธีที่ถูกต้อง (และปลอดภัย) ในการรวบรวมคอมไพเลอร์จากซอร์สโค้ด (สถานการณ์ไก่ไข่ที่ดูเหมือน) แล้วรวบรวมการแจกจ่าย Unix / Linux ที่เชื่อถือได้ตั้งแต่เริ่มต้น? คุณสามารถสันนิษฐานได้ว่าฉันหรือผู้อื่นมีความสามารถในการอ่านและทำความเข้าใจซอร์สโค้ดสำหรับข้อบกพร่องด้านความปลอดภัยดังนั้นซอร์สโค้ดจะถูกตรวจสอบก่อนรวบรวม สิ่งที่ฉันเป็นจริงหลังจากนั้นเป็นแนวทางในการทำงานเพื่อสร้างคอมไพเลอร์นี้จากศูนย์อย่างปลอดภัยและสามารถใช้ในการรวบรวมเคอร์เนลส่วนอื่น ๆ ของระบบปฏิบัติการและแอปพลิเคชัน สแต็กการรักษาความปลอดภัยจะต้องเริ่มต้นที่ระดับฐานหากเรามั่นใจในระบบปฏิบัติการหรือแอพพลิเคชั่นที่ทำงานบนสแต็กนั้น ใช่ฉันเข้าใจว่าอาจมีฮาร์ดแวร์ด้านหลังซึ่งอาจแทรกไมโครโค้ดบางส่วนลงในคอมไพเลอร์เมื่อสร้างขึ้น ไม่มากที่เราสามารถทำได้เกี่ยวกับเรื่องนี้ในขณะนั้นยกเว้นอาจใช้ชิปที่ไม่ได้ออกแบบในสหรัฐอเมริกา มาจัดเรียงเลเยอร์นี้เพื่อเริ่มต้นและสมมติว่าฉันสามารถสร้างมันบนคอมพิวเตอร์เครื่องเก่าก่อนที่จะแทรกแบ็คดอร์ใดก็ได้ ดังที่บรูชชไนเออร์พูดว่า: "สำหรับวิศวกรฉันพูดแบบนี้: เราสร้างอินเทอร์เน็ตและพวกเราบางคนช่วยในการล้มล้างตอนนี้พวกเราที่รักเสรีภาพต้องแก้ไขมัน" …

8
เราสามารถรับข้อมูลคอมไพเลอร์จากเอลฟ์ไบนารีได้หรือไม่?
มีโอกาสบ้างไหมที่จะรู้วิธีสร้างไบนารีภายใต้ Linux? (และหรือ Unix อื่น ๆ ) คอมไพเลอร์, รุ่น, เวลา, ตั้งค่าสถานะ ฯลฯ ... ฉันดูreadelfและไม่พบอะไรมาก แต่อาจมีวิธีอื่นในการวิเคราะห์รหัสไบนารี / ส่วน ฯลฯ ... สิ่งใดที่คุณรู้วิธีการแยก?

2
ทำไมฉันไม่สามารถรันโปรแกรม C นี้ได้?
ฉันพยายามเรียกใช้โปรแกรม "กระบวนการ" ครั้งแรกของฉัน แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: ./fork.c: line 4: syntax error near unexpected token `(' ./fork.c: line 4: `int main()' ฉันค่อนข้างมั่นใจว่ารหัสถูกต้อง: #include <sys/types.h> #include <stdio.h> int main() { pid_t pid; printf("Hello fork()\n"); switch(pid=fork()) { case -1: printf("Error by fork().....\n"); exit(0); case 0: printf("I'm the child process \n"); break; default: printf("I'm the dad …
12 c  compiler 

3
ทำการรวบรวมต่อไปอย่างไร
ฉันรู้ว่าฉันสามารถขัดจังหวะmakeกระบวนการได้ตลอดเวลาโดยไม่ต้องคอมไพล์ต้นไม้ต้นกำเนิดอีกครั้ง อย่างที่ฉันรู้makeรวบรวมเฉพาะเป้าหมายหากยังไม่ได้รวบรวมหรือรหัสแหล่งที่มามีการแก้ไขหลังจากการรวบรวมครั้งสุดท้าย แต่ถ้าฉันขัดจังหวะmakeจะต้องมีครึ่งหนึ่ง (ขึ้นอยู่กับระดับการทำงานพร้อมกัน) อย่างแน่นอน มันจะมีอะไรทำกับพวกเขาในครั้งต่อไปผมทำงานmake? หรือมันจะเสร็จสิ้นเป้าหมายปัจจุบันเมื่อฉันกดCtrl+ Cเพื่อหลีกเลี่ยงการรวบรวมไบนารีบางส่วน?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.