2013-11-28 9 views
0

바이너리 코드의 일부분의 무결성을 검사하는 함수를 만들었습니다.LLVM IR 패스가있는 후 처리 바이너리 파일

이 함수는 llvm 패스로 추가됩니다.

IT는 최종 주소 플러스 검사 값을 시작해야합니다.

점검 값은 2 진 코드의 계산 결과입니다.

아쉽게도 IR 패스는 llvm의 중간 엔드 부분에 있으며이 부분은 바이너리가 아닌 IR과 함께 작동합니다.

아직 바이너리 코드를 알지 못하고 어떻게 주소를 알고 있습니까? 지금은

, 내 패스와 내가 할 수있는 모든 것을 만들고 난 이진 파일에 가서 미친 사람 ;-)

내 첫 번째 질문은처럼 헥사 값을 수정할 pyelftool를 사용 : 그것은이다 이 주소를 미리 알 수 있습니다.

나는 blockaddress을 본다.하지만 좀 더 유연한 (지시의 주소) 것이 필요하다.

두 번째 질문은입니다. 누군가가 체크 값을 수정하는 것이 좋습니다. 내 솔루션은 매우 우아하지 않고 나는 플레이트 폼에 의존합니다 .-

나는 이해할 수 있었으면 좋겠다.

감사합니다.

답변

0

질문이 명확하지 않습니다. LLVM IR 레벨과 바이너리 머신 코드 레벨 사이에 이상한 혼합을 시도하는 것처럼 들리지만별로 의미가 없습니다.

LLVM IR은 컴파일러의 중간 표현으로 사용되는 상당히 추상적 인 타겟 독립적 인 언어입니다. LLVM IR에서 방출되는 지침의 주소에 대한 연결은 없습니다. blockaddress은 기본 블록의 주소로 사용되지만 LLVM i8* 유형이며 일부 컴퓨터 고유 주소는 아닙니다.

+0

답장을 보내 주셔서 감사합니다. 그래, 내가 LLVM IR과 바이너리 코드를 혼합하려고 시도했는데 전혀 추천받지 못했다는 것을 알고있다. 나는 다른 방법을 찾아야한다고 생각한다. – user3046583