Bạn đang xem: Shellcode là gì
vì thế hy vọng viết được shellcode, tôi đề xuất học tập phương pháp viết mã máy? Câu trả lời là ko. Không ai trực tiếp viết ra mã thứ khi mong chế tạo shellcode. Txuất xắc vào đó, chúng ta bao gồm thể: a) sử dụng các shellcode có sẵn trên Internet; b) viết bởi C, dịch quý phái Assembly rồi thường xuyên dịch sang mã máy; c) viết bởi Assembly rồi dịch luôn ra mã lắp thêm.Đối với cách a), tin vui là có rất nhiều tlỗi viện shellcode bên trên Internet, thậm chí là tất cả một số trong những lịch trình chất nhận được bạn sản xuất shellcode với viết exploit bằng một ngôn ngữ thời thượng nlỗi Pyhạn hẹp hay Ruby. Tin bi lụy là nếu khách hàng nhào vào thực hiện tức khắc những shellcode tất cả sẵn mà lại không tìm hiểu bọn chúng, bạn có thể bị gài bom. Nên hãy nhờ rằng, shellcode có thể có tác dụng được toàn bộ hầu hết chuyện, hành động rước shellcode trường đoản cú Internet rồi chạy mà không quá sự gọi shellcode đó làm những gì y hệt như việc chạy những file .exe cộ cảm nhận xuất phát điểm từ một người lạ mặt! Đến một thời điểm như thế nào đó, bạn sẽ thực hiện những lịch trình sinh sản shellcode tự động hóa nhắc trên nhằm dễ dàng hóa việc viết exploit tuy vậy trước mắt, bạn cần phải tự viết được shellcode sẽ. Trong tài liệu này chúng ta vẫn áp dụng luân chuyển nhì cách b) và c) nhằm viết shellcode. Quý Khách buộc phải áp dụng bí quyết b) lúc mới ban đầu hoặc Khi rất cần được tiến hành một nhiều loại shellcode tinh vi. Nhìn vào nhị bí quyết này, bạn cũng có thể thấy rằng viết shellcode đòi hỏi đề nghị bao gồm sự thông hiểu về ngôn từ Assembly của phong cách thiết kế máy vi tính mà các bạn dự tính đã chạy shellcode bên trên kia. Đây là vấn đề gọi nhiên cùng vì các loại sản phẩm công nghệ không giống nhau (x86, x86-64, sparc, ppc, amd tuyệt mips…) chỉ hiểu được một đội mã trang bị khác nhau. Dường như, chúng ta còn bắt buộc thông đạt giải pháp giao tiếp cùng với hệ điều hành quản lý (linux, windows, solaris tuyệt freebsd…) để rất có thể thực hiện được lệnh vào shellcode. Đôi khi, bạn phải tất cả một phiên bản shellcode khác nhau cho mỗi một số loại hệ điều hành chạy trên từng loại phong cách xây dựng phần cứng khác nhau. Nói cách khác, shellcode dựa vào vào hệ quản lý điều hành cùng bản vẽ xây dựng phần cứng.
Xem thêm: Trọng Tâm Tam Giác Là Gì - Cách Xác Định Trọng Tâm Hay Và Chính Xác
Bạn vẫn còn đó đã phát âm bài xích này đó chứ đọng :p? Nếu gồm bất cứ nơi nào còn lờ mờ, bạn nên gọi lại từ đầu với đừng hổ ngươi hỏi nếu như bạn muốn. Những gì tôi trình diễn về shellcode từ đầu mang lại giờ đồng hồ là đầy đủ ý quan trọng tốt nhất về shellcode, nếu như bạn chỉ muốn biết shellcode nhằm rỉ tai mang lại vui thì bạn cũng có thể tạm dừng tại đây. Còn ví như bạn có nhu cầu từ bỏ viết cho doanh nghiệp đông đảo đoạn shellcode buổi tối ưu thì hãy đi tiếp cùng tôi nhé.
Trong bài xích tiếp theo, tôi đã trình diễn phần đông kỹ năng và kiến thức cnạp năng lượng bạn dạng về Assembly đủ để chúng ta cũng có thể đọc với viết được shellcode trước tiên của bản thân mình. Sau đó tôi sẽ đề cập tới nhị trlàm việc ngại đặc trưng độc nhất cơ mà bạn cần phải vượt qua khi viết shellcode: vấn đề can dự ô nhớ (addressing problem) và vấn đề của các byte có mức giá trị null (null byte problem). Chúng ta cũng sẽ luận bàn sơ sài một trong những ví dụ về shellcode trên phong cách thiết kế máy Intel 32-bit (còn được gọi là x86).
Cần chuẩn bị đa số gì để học tập viết shellcode?
Nhỏng đang nói từ đầu, nội dung bài viết này sẽ không những hiểu biết chúng ta cần gồm kiến thức và kỹ năng trước về Assembly tốt C. Yêu cầu duy nhất là chúng ta đề nghị có sự khát khao học tập hỏi loại new. Ngoài ra, tôi thực hiện Ubuntu Linux bên trên sản phẩm công nghệ x86 để viết những shellcode chủng loại vào bài này, cho nên vì thế bạn cũng rất cần phải sẵn sàng một laptop gồm cấu hình tương tự (Linux-x86) nhỏng tôi. Bạn chọn distro nào cũng được, tuy vậy rất tốt là hãy chọn Ubuntu nlỗi tôi luôn luôn. Các phần mềm khác nhưng bạn cần phải chuẩn bị:
gdb là ứng dụng giúp cho bạn debug (bắt lỗi) hoặc disassemble những lịch trình viết bởi C. gdb thường sẽ có sẵn trong distro của người sử dụng.objdump là hình thức khiến cho bạn xem những công bố quan trọng trong các tệp tin object giỏi tệp tin executable. Tương tự nhỏng gdb, objdump thông thường sẽ có sẵn trong distro của người tiêu dùng.strace là chế độ coi các syscall (tôi vẫn lý giải có mang này sau) nhưng một công tác Hotline Lúc nó được thực thi(vnhacker)
Lượt coi (2206)







