나는 리눅스 X86_64에 종사하고있다.PLT 스터브의 주소를 찾으십시오
항목이 나타내는 동적 함수의 이름이 지정된 ELF 파일에서 특정 PLT 항목의 주소를 결정해야합니다. 주소에서 파일 오프셋을 알아낼 수는 있지만 주소를 결정할 수 있어야합니다.
을 사용하여 ELF 파일을 분해하면 objdump가 PLT의 각 항목에 대해 기호 이름을 사용한다는 것을 알 수 있습니다. (어디에서이 주소와 기호 이름 사이의 관계를 얻을 수 objdump를합니까?)
예 :
0000000000000041a2b0 [email protected]:
내가 objdump -T elffile | grep fileno
를 사용하는 경우 나는 이런 식으로 뭔가를 얻을 : 내가 필요가있는 무엇
0000000000000 DF *UND* 00000000000000000 GLIBC_2.2.5 fileno
"C"에서 할 수있는 일은 특정 동적 함수에 대한 ELF 파일에서 PLT 항목을 찾아 주소를 얻는 것입니다.
배경은 기존 ELF 파일에 패치를 적용하고 있으며 함수 호출을 다른 동적 함수로 리디렉션해야한다는 것입니다. objdump 디스 어셈블리에서 수집 한 주소를 사용하여 ELF 파일을 수동으로 패치하고 이것이 특정 응용 프로그램에서 작동한다는 것을 증명했습니다. 프로그램에서이 작업을 수행 할 수 있어야합니다. objdump 디스 어셈블러 코드를 통해 크롤링하지 않아도 PLT 항목 기호 및 주소를 가져 오는 방법을 파악할 수 있기를 바랍니다.
i386의 경우 PLT 항목 크기가 올바르게보고되지 않습니다. 보고 된 plt 항목 크기에 4를 곱하거나 항목 크기에 16을 사용할 수 있습니다. – codemonkey