2013-10-26 1 views
1
내가 뭘하려고 오전 업데이트하는 할당 코드에서 사용되는 값을 기반으로 새 코드를 모두 할당 코드를 찾는 복잡한 코드 정적 분석 작업

C 코드 주입

  1. 에 비해, 삽입 간단한데

    모든 기본적인 제어 블록을 찾는 특정 메모리는

  2. , 특정

은 현재 내가 소스 코드가 메모리, I 돈 있도록를 업데이트하기 위해 ID를 기반으로하는 새로운 코드를 각 블록에 고유 ID를 할당하고, 삽입 바이너리를 처리 할 필요가 없습니다.

하지만이 지역에 새로 왔는데 손으로 분석하려면 Perl 스크립트와 같은 것이 필요한지 궁금합니다. 어떤 몸이라도이 직업을 얻는 방법에 대한 몇 가지 지침을 줄 수 있습니까?

고맙습니다.

+1

"내가 뭘하려고하는지 간단하게 보입니다."- 음, 아니. 이를 위해서는 완전한 C 파서가 필요합니다. 그리고 코드를 삽입하기 위해 확장 할 수있는 컴파일러. – Mat

+0

안녕 매트, 내 미숙 한 말에 고마워, 미안하지만 ... "그냥"소스 코드에 특정 코드 조각을 삽입하여 "새로운"소스 코드를 얻고 일반 컴파일러에 넣을 수 있다고 생각합니다. 더 실현 가능 ..? – computereasy

+1

여전히 완전한 C 파서/분석기가 필요하며,이 경우 사용자의 필요에 맞게 적절한 "텍스트"변경을 수행하는 방법을 찾아야합니다. 모듈화/확장 성을 염두에두고 작성된 컴파일러 내부에서 작업하는 것보다 실제로는 일반적으로 어려울 수 있습니다 (clang/llvm 참조). – Mat

답변

1

아마도이 경우 동적 주입이 더 쉽습니다. pintool (http://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool)을 확인하십시오. 내가 아는 한, 메모리 연산 추적이 가능하고 (대입은 경우에 따라 다름) 기본 블록을 식별 할 수는 있지만 확실하지는 않습니다. 핀으로 이런 종류의 작업을 수행하지 않았습니다.

+0

안녕하세요 앤드류, 감사합니다, 나는 pintool을 생각하고 결국 내 목표를 달성하기 위해 Clang을 사용합니다! 너를 위해 최선을 다하라! – computereasy