The stack is an actual data structure in memory, accessed in LIFO (las dịch - The stack is an actual data structure in memory, accessed in LIFO (las Việt làm thế nào để nói

The stack is an actual data structu

The stack is an actual data structure in memory, accessed in LIFO (last-in, first-out) order. This memory segment, located above and adjacent to heap data, grows down from a higher memory address to a lower memory address. Like heap data, stack data is also allocated at runtime. The stack is like a “scratch pad” that temporarily holds a function’s parameters and local variables, as well as the return address for the next instruction to be executed. This return address is of prime importance as it represents executable code sitting on the stack waiting for its turn to execute.

A thorough understanding of the stack and how it functions and. performs is essential to understanding how buffer overflow vulnerabilities can be used and exploited for devious and malicious purposes. This being the case, we need to
explore the stack and the stack segment in a little more detail. To do this, we will
rights
take a temporary and adventurous detour down to the hardware level and into
the bowels of the Intel 80386 CPU. Let’s begin with the CPU Registers.
full
Registers
Registers are either 16 or 32 bit7 high-speed storage locations directly inside the
CPU, designed for high-speed access. For the purposes of discussion, registers
can be grouped into the four categories of Data, Segment, Index, and Control
retains
(see Table II). Certainly, there are some terms here that should seem somewhat
familiar. The complete register set is illustrated in Figure 2.

TABLE II
REGISTER SET INTELAuthor80386 ARCHITECTURE
Category Register Function
Data EAX (accumulator) 2002, Used for arithmetic and data movement.Each
EBX (base) register can be addressed as either a 16 or 32 bit
ECX (counter) value. EBX can hold the address of a procedure or
EDX (data) variable.
Segment CS (code segment) Used as base locations for program instructions, data,
DS (data segment) and the stack. All references to memory involve a
SS (stack segment) segment register used as a base location.
ES (extra segment)
FS & GS Institute
Index EBP (base pointer) Contain the offsets of data and instructions. The term
ESP (stack pointer) offset refers to the distance of a variable or instruction
ESI (source index) from its base segment. The stack pointer contains the
EDI (destination index) offset of the top of the stack
SANS
Control © EIP (instruction pointer) The instruction pointer always contains the offset of
EFLAGS the next instruction to be executed within the current
code segment.

For instance, the segment registers CS, DS, ES, and SS used as base locations for program instructions (text data), data (static and heap data), and the stack

7 32-bit and 64-bit in 64 bits systems such as the Alpha and the new Intel Itanium.
2/6/2003 Page 6 of 24






© SANS Institute 2002, As part of the Information Security Reading Room. Author retains full rights.

(stack data). The index registers EBP and ESP contain offset references to the code, data, and stack registers. They are, in effect, a compass or positioning service that allow the program to keep track of exactly where all of its data and instructions are located.

The data registers contain actual data bits and are used for the movement and manipulation of this data. EBX is particularly useful for holding the address of a function or variable. EBX plays a crucial role in the exploitation of a buffer
overrun. The control registers are bit-wise storage units used to alert the
. or the program
program or CPU of critical states or conditions, within the data
itself. EIP is of special importance in that it
contains the address of the next instruction to
be executed. Again, this is a crucial element
in the exploitation of the buffer overrun.
The Stack
Our primary interest, of course, is the stack.
Let’s look at this data structure a bit closer and
see how it relates to and interfaces with the
registers. We are forced to look at a little
assembly language code at this point, but as
you shall see, it is really not all that frightening.
As mentioned earlier, the stack is a special
memory buffer outside of the CPU usedAuthoras a
temporary holding area for addresses and
data. The stack resides inside of the stack
segment. Each 16-bit location on the stack is
2002,
pointed at by the ESP register, or stack
pointer. The stack pointer, in turn, holds the
address of the last data element to be added
to, or pushed onto the stack.
It is important to noteInstitutethat the push operation
pushes data backwards onto the stack. This is
what causes stack memory to grow downward,
or grow toward SANS the lower memory addresses.

Now this can© truly be confusing and make one’s head spin, but it must be understood to execute an attack on the stack. So please, just hang tight.

Conversely, the last value added to the stack is also the first one to be removed, or popped from the stack. Hence, the stack is a LIFO (first-in, last-out) data structure. For clarity, let’s illustrate this.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Ngăn xếp là một cấu trúc dữ liệu thực tế trong bộ nhớ, truy cập theo thứ tự LIFO (cuối-in, first-out). Phân khúc bộ nhớ này, nằm ở trên và tiếp giáp với đống dữ liệu, phát triển xuống từ một địa chỉ bộ nhớ cao đến một địa chỉ bộ nhớ thấp hơn. Như đống dữ liệu, dữ liệu ngăn xếp cũng được cấp phát tại thời gian chạy. Ngăn xếp là giống như một pad đầu"" mà tạm thời giữ chức năng một tham số và biến địa phương, cũng như địa chỉ trả lại cho các hướng dẫn tiếp theo được thực hiện. Điều này trở lại địa chỉ là nguyên tố quan trọng khi nó đại diện cho thực thi mã ngồi trên ngăn xếp chờ đợi lần lượt mình để thực hiện.

một sự hiểu biết toàn diện của ngăn xếp và làm thế nào nó hoạt động và. thực hiện là rất cần thiết cho sự hiểu biết làm thế nào bộ đệm tràn lỗ hổng có thể được sử dụng và khai thác cho mục đích quanh co và độc hại. Đây là trường hợp, chúng tôi cần phải
khám phá ngăn xếp và ngăn xếp phân đoạn trong một chút thêm chi tiết. Để làm điều này, chúng tôi sẽ
quyền
có một đường vòng tạm thời và mạo hiểm xuống phần cứng cấp và vào
của Intel 80386 CPU. Hãy bắt đầu với các CPU đăng ký.
đầy đủ
đăng ký
đăng ký là 16 hoặc 32 bit7 tốc độ cao lưu trữ vị trí trực tiếp bên trong các
CPU, được thiết kế cho tốc độ cao truy cập. Cho các mục đích của cuộc thảo luận, đăng ký
có thể được nhóm lại thành bốn loại dữ liệu, phân đoạn, chỉ số, và kiểm soát
giữ lại
(xem bảng II). Chắc chắn, có một số điều khoản ở đây nên có vẻ hơi
quen thuộc. Các thiết lập hoàn thành đăng ký được minh họa trong hình 2.

BẢNG II
đăng ký thiết lập kiến trúc INTELAuthor80386
mục đăng ký chức năng
dữ liệu EAX (accumulator) năm 2002, được sử dụng để di chuyển số học và dữ liệu.Mỗi
đăng ký EBX (cơ sở) có thể được giải quyết như hoặc là một chút 16 hoặc 32
ECX (số lượt truy cập) giá trị. EBX có thể giữ địa chỉ của một thủ tục hoặc
biến EDX (dữ liệu).
Phân đoạn CS (mã phân đoạn) được sử dụng như là các địa điểm cơ sở cho hướng dẫn chương trình, dữ liệu,
DS (dữ liệu phân đoạn) và ngăn xếp. Tất cả các tham chiếu đến bộ nhớ liên quan đến một
SS (ngăn xếp phân đoạn) phân đoạn đăng ký sử dụng như một điểm cơ sở.
ES (phân đoạn phụ)
FS & GS viện
chỉ số EBP (căn cứ con trỏ) chứa các offsets của dữ liệu và hướng dẫn. Thuật ngữ
Bù đắp ESP (ngăn xếp con trỏ) đề cập đến khoảng cách của một biến hoặc giảng dạy
ESI (nguồn chỉ số) từ phân khúc cơ sở của nó. Con trỏ stack chứa các
EDI (điểm đến chỉ số) đối tượng dời hình phía trên cùng của ngăn xếp
SANS
kiểm soát © EIP (hướng dẫn con trỏ) con trỏ hướng dẫn luôn chứa đối tượng dời hình của
EFLAGS các chỉ dẫn tiếp theo được thực hiện trong vòng hiện tại
phân đoạn mã.

Ví dụ, các phân đoạn đăng ký CS, DS, ES và SS được sử dụng như là cơ sở địa điểm để được hướng dẫn chương trình (dữ liệu văn bản), dữ liệu (tĩnh và heap dữ liệu), và chồng

7 32-bit và 64-bit 64 bit hệ thống chẳng hạn như Alpha và mới Intel Itanium.
2/6/2003 trang 6 / 24



© SANS viện năm 2002, như là một phần của phòng đọc sách bảo mật thông tin. Tác giả vẫn giữ đầy đủ quyền.

(stack data). Đăng ký chỉ số EBP và ESP chứa bù đắp tham chiếu đến mã, dữ liệu, và ngăn xếp đăng ký. Họ là, trên thực tế, một la bàn hoặc vị trí dịch vụ cho phép chương trình để theo dõi chính xác nơi mà tất cả dữ liệu và hướng dẫn của nó được đặt.

đăng ký dữ liệu chứa dữ liệu thực tế bit và được sử dụng để di chuyển và thao tác dữ liệu này. EBX là đặc biệt hữu ích để giữ địa chỉ của một chức năng hoặc biến. EBX đóng một vai trò quan trọng trong việc khai thác của một bộ đệm
tràn ngập. Đăng ký kiểm soát là đơn vị lưu trữ bit-wise được sử dụng để cảnh báo các
. hoặc chương trình
chương trình hoặc CPU của kỳ quan trọng hoặc các điều kiện, trong dữ liệu
chính nó. EIP có tầm quan trọng đặc biệt trong đó nó
chứa địa chỉ của các hướng dẫn tiếp theo để
được thực hiện. Một lần nữa, đây là một yếu tố quan trọng
trong việc khai thác của overrun bộ đệm. Ngăn xếp

quan tâm chính của chúng tôi, tất nhiên, là ngăn xếp.
Hãy nhìn vào cấu trúc dữ liệu này một chút gần gũi hơn và
xem làm thế nào nó liên quan đến và giao diện với các
đăng ký. Chúng tôi buộc phải xem xét một chút
mã ngôn ngữ lắp ráp vào thời điểm này, nhưng như
bạn sẽ thấy, nó thực sự không phải là tất cả những gì đáng sợ.
Như đã đề cập trước đó, ngăn xếp là một đặc biệt
bộ nhớ đệm bên ngoài CPU usedAuthoras một
tạm thời giữ lá cho các địa chỉ và
dữ liệu. Ngăn xếp cư trú bên trong của ngăn xếp
phân đoạn. Mỗi vị trí 16-bit trên ngăn xếp là
2002,
chĩa ngay vào của ESP đăng ký, hoặc ngăn xếp
con trỏ. Con trỏ ngăn xếp, lần lượt, Giữ các
địa chỉ của các phần tử dữ liệu cuối cùng sẽ được thêm vào
đến, hoặc đẩy vào ngăn xếp.
Nó là quan trọng để noteInstitutethat hoạt động đẩy
đẩy các dữ liệu về phía sau vào ngăn xếp. Đây là
những gì gây ra bộ nhớ ngăn xếp để phát triển xuống,
hoặc phát triển hướng tới SANS các thấp hơn bộ nhớ địa chỉ.

bây giờ điều này có thể © thực sự là khó hiểu và làm cho quay đầu, nhưng nó phải được hiểu để thực hiện một cuộc tấn công vào ngăn xếp. Vì vậy xin vui lòng, chỉ cần treo chặt chẽ.

ngược lại, giá trị cuối thêm vào ngăn xếp cũng là người đầu tiên để được loại bỏ, hoặc popped từ ngăn xếp. Do đó, ngăn xếp là một cấu trúc dữ liệu (đầu tiên-in, cuối cùng-out) LIFO. Cho rõ ràng, chúng ta hãy minh họa điều này.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Stack là một cấu trúc dữ liệu thực tế trong bộ nhớ, truy cập trong LIFO (last-in, đầu ra) theo thứ tự. Phân đoạn bộ nhớ này, nằm ​​ở trên và tiếp giáp với dữ liệu heap, phát triển xuống từ một địa chỉ bộ nhớ cao hơn đến một địa chỉ bộ nhớ thấp hơn. Giống như dữ liệu đống, đống dữ liệu còn được phân bổ trong thời gian chạy. Stack là giống như một "đầu pad" tạm thời nắm giữ các thông số của chức năng và biến địa phương, cũng như các địa chỉ trả lại cho lệnh tiếp theo được thực hiện. Địa chỉ trở lại này là quan trọng hàng đầu vì nó đại diện cho mã thực thi ngồi trên đống chờ đợi đến lượt của mình để thực hiện. Một sự hiểu biết thấu đáo về chồng và làm thế nào nó hoạt động và. biểu diễn là điều cần thiết để có thể hiểu như thế nào lỗ hổng tràn bộ đệm có thể được sử dụng và khai thác cho mục đích quanh co và nguy hiểm. Đây là trường hợp, chúng ta cần phải khám phá những ngăn xếp và phân đoạn ngăn xếp trong một chi tiết nhỏ hơn. Để làm điều này, chúng tôi sẽ quyền phải đi đường vòng tạm thời và mạo hiểm xuống đến cấp độ phần cứng và vào ruột của Intel 80386 CPU. Hãy bắt đầu với CPU Đăng ký. đầy đủ Đăng ký Đăng ký hoặc là 16 hoặc 32 BIT7 tốc độ cao địa điểm lưu trữ trực tiếp bên trong CPU, được thiết kế để truy cập tốc độ cao. Theo mục đích của cuộc thảo luận, đăng ký có thể được nhóm lại thành bốn loại dữ liệu, bộ phận, chỉ số và kiểm soát giữ lại (xem bảng II). Chắc chắn, có một số thuật ngữ ở đây là nên có vẻ hơi quen thuộc. Các thiết lập đăng ký hoàn toàn được minh họa trong hình 2. BẢNG II ĐĂNG KÝ SET INTELAuthor80386 KIẾN TRÚC mục Đăng ký chức năng dữ liệu EAX (ắc quy) năm 2002, được sử dụng cho số học và dữ liệu movement.Each EBX (cơ sở) đăng ký có thể được giải quyết hoặc là một chút 16 hoặc 32 ECX (truy cập) giá trị. EBX có thể giữ địa chỉ của một thủ tục hoặc EDX (dữ liệu) biến. Segment CS (đoạn mã) được sử dụng làm địa điểm cơ sở để được hướng dẫn chương trình, dữ liệu, DS (đoạn dữ liệu) và ngăn xếp. Tất cả các tham chiếu tới bộ nhớ liên quan đến một SS (stack phân khúc) đoạn đăng ký sử dụng như một địa điểm cơ sở. ES (bộ phận phụ) FS & GS Viện Index EBP (con trỏ cơ sở) Bao gồm các hiệu số của dữ liệu và hướng dẫn. Thuật ngữ ESP (ngăn xếp con trỏ) bù đắp đề cập đến khoảng cách của một biến hoặc hướng dẫn ESI (chỉ số nguồn) từ phân khúc cơ sở của nó. Các con trỏ ngăn xếp chứa EDI (chỉ đích) offset của đỉnh ngăn xếp SANS kiểm soát © EIP (hướng dẫn con trỏ) Các con trỏ chỉ dẫn luôn luôn có bù đắp của EFLAGS lệnh tiếp theo được thực hiện trong hiện tại đoạn mã. Ví dụ, đoạn ghi CS, DS, ES, SS và sử dụng như địa điểm cơ sở để được hướng dẫn chương trình (dữ liệu văn bản), dữ liệu (dữ liệu tĩnh và heap), và chồng 7 32-bit và 64-bit trong 64 bit hệ thống như Alpha và mới Intel Itanium. 2003/02/06 Trang 6 trong 24 © SANS Institute năm 2002, Là một phần của Reading Room bảo mật thông tin. Tác giả giữ toàn quyền. (ngăn xếp dữ liệu). Chỉ số đăng ký EBP và ESP chứa tài liệu tham khảo để bù đắp sổ đăng ký mã số, dữ liệu, và ống khói. Họ đang có, có hiệu lực, một la bàn định vị hoặc dịch vụ cho phép các chương trình để theo dõi chính xác nơi mà tất cả các dữ liệu và hướng dẫn của nó được đặt. Việc đăng ký dữ liệu chứa các bit dữ liệu thực tế và được sử dụng để di chuyển và thao tác dữ liệu này. EBX đặc biệt hữu ích để giữ địa chỉ của một chức năng hoặc biến. EBX đóng một vai trò quan trọng trong việc khai thác một bộ đệm tràn ngập. Việc đăng ký kiểm soát là đơn vị lưu trữ bit-khôn ngoan sử dụng để cảnh báo . hoặc chương trình chương trình hoặc CPU của các quốc gia quan trọng hoặc các điều kiện, trong các dữ liệu của chính nó. EIP có tầm quan trọng đặc biệt vì nó chứa địa chỉ của lệnh kế tiếp để được thực thi. Một lần nữa, đây là một yếu tố quan trọng trong việc khai thác tràn bộ đệm. Stack quan tâm chính của chúng tôi, tất nhiên, là chồng. Hãy nhìn vào cấu trúc dữ liệu này một chút gần gũi hơn và xem làm thế nào nó liên quan đến giao diện và với đăng ký. Chúng ta buộc phải nhìn vào một chút mã ngôn ngữ lắp ráp tại thời điểm này, nhưng như bạn sẽ thấy, nó thực sự không phải là tất cả những gì đáng sợ. Như đã đề cập trước đó, chồng là một đặc biệt bộ nhớ đệm bên ngoài của CPU usedAuthoras một khu vực tạm giữ cho địa chỉ và dữ liệu. Ngăn xếp nằm bên trong của ngăn xếp phân khúc. Mỗi vị trí 16-bit trên stack là năm 2002, chỉ bởi ESP đăng ký, hoặc ngăn xếp con trỏ. Các con trỏ ngăn xếp, lần lượt, giữ địa chỉ của các phần tử dữ liệu cuối cùng được thêm vào , hoặc đẩy vào stack. Điều quan trọng là noteInstitutethat hoạt động đẩy là đẩy dữ liệu ngược trở lại vào ngăn xếp. Đây là những gì gây ra ngăn xếp bộ nhớ để phát triển đi xuống, hoặc phát triển theo hướng SANS các địa chỉ bộ nhớ thấp hơn. Bây giờ điều này có thể thực sự © gây nhầm lẫn và làm cho một người quay đầu, nhưng nó phải được hiểu để thực hiện một cuộc tấn công trên stack. Vì vậy, xin vui lòng, chỉ cần treo chặt chẽ. Ngược lại, giá trị cuối cùng được thêm vào stack cũng là người đầu tiên được gỡ bỏ, hoặc xuất hiện từ ngăn xếp. Do đó, ngăn xếp là một LIFO (lần đầu tiên trong, cuối cùng ra) cấu trúc dữ liệu. Để rõ ràng hơn, chúng ta hãy minh họa điều này.



















































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: