From Learning Linux Binary Analysis by Ryan “elfmaster”O “Neill 32 페이지에서 저자는
32 비트 ELF 파일의 재배치 기록은 64 비트와 동일합니다. 그러나 32 비트 정수를 사용합니다.에 대한 다음 예제는 64 비트에서 일반적으로 사용되지 않는 암시 적 추가를 보여줄 수 있도록 32 비트로 컴파일되는 개체 파일 코드입니다. An 암시 적 추가 는 재배치 레코드가 iv id =를 포함하지 않는
ElfN_Rel
유형 구조에 저장 될 때 발생합니다. “e1460a5786″>
필드이므로 addend는 재배치 대상 자체에 저장됩니다. 64 비트 실행 파일은 명시 적 추가 div를 포함하는 ElfN_Rela
구조체를 사용하는 경향이 있습니다. >. 두 가지 시나리오를 모두 이해할 가치가 있다고 생각하지만 암시 적 추가 기능은 좀 더 혼란 스럽기 때문에이 영역을 조명하는 것이 좋습니다.
무엇입니까? “추가”의 실제 정의?
댓글
- english.stackexchange.com/search?q=addend
- Addend + addend, minuend-subtrahend, multiplicand * multiplier, dividend / divisor
답변
추가 된 숫자를 의미한다고 생각합니다.이 경우에는 기본로드 주소에 추가 된 숫자 ( 또는 세그먼트로드 주소)를 사용하여이 재배치에 대한 최종 포인터를 계산합니다.
이진을 0x400000에서 메모리로로드 할 때 0x405678을 가리키는 0x401234에 포인터가 있다고 가정 해 봅시다. 바이너리를 0x800000에로드하면 0x805678을 가리켜 야하므로 재배치가 필요합니다.) ELF를 모르지만이 내용을 읽었습니다.
-
in t 암시 적 경우 재배치 테이블은 바이너리 (이 경우 0x1234)에 오프셋 만 저장하고 오프셋 0x1234의 바이너리에 대상 오프셋 0x5678을 저장합니다. 따라서 재배치는 재배치 테이블
*(base + A) += base
에서 각 주소
A
에 대해재배치 테이블이 PE 파일에서 작동하는 방식입니다.)
-
명시적인 경우 재배치 테이블은 오프셋을 바이너리와 대상 오프셋 (예 : 0x1234 0x5678)에 저장합니다. 따라서 여기서 재배치는
재배치 테이블
*(base + A) = base + B
의 각 주소 쌍
A, B
입니다. 이 경우 오프셋 0x1234에서 바이너리에 무엇이 들어가는 지 모르겠습니다.
Answer
- 8 월 는 추가 될 수있는 숫자를 의미하는 용어입니다.
- Addend 는 추가 할 번호입니다.
Dictionary.com ,
“3 + 4”가 적힌 종이를 쳐다 본 적이 있습니까? ”라고 적었고 이 두 개의 각 수량에 대한 적절한 용어는 무엇입니까?라고 궁금해했습니다. 아니요. 첫 번째 숫자는 augend입니다. 및 추가 된 번호가 추가됩니다.
Wikipedia의 “계산 결과” 에서 다른 수학 용어 차트를 볼 수 있습니다.
여기에 특수 용어가있는 이유는 무엇입니까?
- 음, 어셈블리에서
add rbi, rax
가 실제로 결과를rbi
에 저장하기 때문일 수 있습니다. 따라서 첫 번째 인수를 아는 것은add
에 대한 인수가 아니라 목적지입니다.add rax, rbi
는 결과를rax
에 저장합니다. 어셈블리가 연산자와 함께 표시되는 경우rbi += rax
및rax += rbi
가 있습니다. - addend 는 항상 오프셋이 아니며, augend가 항상 기준이되는 것은 아닙니다.이 특정 예에서는 “offset”이 훨씬 더 적절합니다.
-
이 특정 경우에 “암시 적 오프셋”이라는 용어는 도구 인터페이스 표준 (TIS) 실행 가능 및 링크 형식 (ELF) 사양 버전 1.2 에서 찾을 수 있습니다.
…
Elf32_Rela
항목에만 명시 적 추가가 포함됩니다. 수정할 위치에 암시 적 추가를 저장합니다. 프로세서 아키텍처에 따라 하나의 형식 또는 다른 형식이 필요하거나 더 편리 할 수 있습니다.결과적으로 특정 시스템에 대한 구현은 하나의 양식을 독점적으로 사용하거나 컨텍스트에 따라 두 가지 양식 중 하나를 사용할 수 있습니다.
Answer
Addend 는 단순히 “추가 할 숫자입니다. to another “, Merian Webster에 따르면 .
댓글
- 이미 기존 답변에 명시되어 있습니다. 더 많은 정보를 제공하기 위해 답변에 조금 더 추가 할 수 있습니다.