--add-section의 사용을 중심으로 두 가지 질문이 있습니다. 간단한 제목이 제목에 있습니다. 저의 독서를 토대로, 저는 어떻게해서 --add-section을 어떻게 실행할 수 있는지 알 수 없었습니다.어떻게 OBJCOPY의 --add-section 스위치를 사용할 수 있습니까?
add-section을 사용하려면 섹션 이름을 전달해야합니다. 기존 섹션 이름을 사용하면 프로그램에서 "섹션 '.data'을 추가 할 수 없습니다 : 잘못된 형식의 파일로 응답합니다. ' 아마도 나는 다른 매개 변수를 전달하기 만하면됩니다. 내가 선호하는 새 섹션 이름을 사용하면 세그먼트에 .blob '이 할당되지 않았습니다. "라는 경고를받습니다.
이제 "not in segment (세그먼트에 포함 안 됨)"경고를 제외하고는 필자가 작업 할 필 요성을 얻었습니다. 나는이 블롭을 실행 파일에 넣는 정당한 방법이 있는지 알아 내고 싶다. 나는 그것을 링크 할 것이지만, 추가하고있는 데이터가 실행 파일 자체의 내용으로부터 생성되기 때문에 그렇게 쉽지는 않습니다.
두 번째 질문은 실제로 내가 염려하는 것입니다. 링크가 완료 될 때까지 BLOB를 계산할 수 없다는 점을 감안할 때 다음 작업을 수행 할 수있는 방법이 있습니까? 이 메모리에 올바른 위치로 실행시에로드되도록
- 링크 ELF
- 는 ELF 파일 ELF 파일 및 기타 데이터
추가 덩어리에서 덩어리를 생성 파일
objcopy --add-section .blob=blob.o \ --set-section-flags .blob=alloc,contents,load,readonly \ --change-section-address .blob=ADDRESS \ program.elf program.blobbed.elf
링크의 일부로 섹션 및/또는 세그먼트를 ELF 파일에 추가하고이 BLOB를 삽입 해 주시면 기꺼이 부탁드립니다. 어떻게해야할지 모르겠다.
두 번째 링크로이 묘기를 달성 할 수 있었지만 objcopy가 더 깨끗해졌습니다.
- 링크 ELF
- 새로운 blob.o을 포함하여 ELF 파일 및 기타 데이터
- 다시 링크 ELF 파일에서 방울을 생성 파일
UPDATE :이 마지막 전략으로 가능한 수 있습니다 재 링크가 첫 번째 링크에서 생성 된 프로그램 부분에서 무언가를 변경하지 않는 한 오래. 처음 시도 할 때 발생하는 것은 아니지만 문제를 해결하는 것이 가능할 수 있습니다. 따라서 두 번째 링크를 거치지 않고이 BLOB에 --add-section을 사용하여 추가하려고합니다.
나는 블록의 크기를 선험적으로 알기 때문에 이런 접근법을 고려했다.그러나이 자리 표시 자의 얼룩이 있으면 첫 번째 링크의 결과가 바뀌고 그럴 수 있습니다. 블롭의 핵심은 덤프 된 바이너리의 끝 부분에 무결성 검사 데이터를 추가하는 것입니다. 가짜 얼룩의 존재는 불가능하지는 않지만 까다 롭습니다. 나는 더 깨끗한 방법을 찾고있다. – user2600958
@ user2600958 최종 해결책은 무엇입니까? –