2013-09-10 5 views
2

일부 맞춤 중간 언어 코드에 대해 CFG를 만들어야합니다. 우리는 현재 Qt + graphviz를 사용하고 있으며 CFG는 엉덩이처럼 보입니다.IDA는 무엇을 그래프에 사용합니까?

특히, 우리는 그래프로 (위에서 아래로) 우리가

  1. 는 "흐름"을 얻을 수있는 방법을 알아낼 질수 및

  2. 는 연결 선이 AROUND 갈 수 있도록 다른 그래프 노드.

어쨌든, 우리는 멋진 IDA CFG에 감탄했습니다. 그리고 IDA는 graphviz를 전혀 사용하지 않는 것으로 나타났습니다! GV는 우리 프로젝트에 xMB의 의존성을 추가합니다. 우리는 그것을 제거하고 싶습니다.

그래서 질문 : IDA가 그래프 렌더링 및 정렬에 사용하는 것을 아는 사람이 있습니까?

우리는 그래프 기능을 사용하기 위해 IDA 플러그인을 작성하는 것을 고려했지만, 이는 우리가하고 싶은 일을 조금 넘는 것처럼 보입니다.

답변

1

저는 IDA가 자체 그래프 라이브러리를 사용한다고 생각합니다. (그에 대한 확실한 답은 Ilfak Guilfanov에게 문의하십시오).

찾고있는 것은 "스기야마 그래프 레이아웃 알고리즘"(Layered graph drawing 참조)입니다.

citeseerx에서이 문제 (특히 CFG에 초점을 맞추기)에 대한 흥미로운 문서가 있습니다 (Graph Layout for Code Flow Visualization 참조).

OGDF (http://www.ogdf.net/)는 약간의 조정이 필요할 수도 있지만 스기야마 레이아웃 알고리즘 (http://www.ogdf.net/doc-ogdf/classogdf_1_1_sugiyama_layout.html)을 제공합니다.

희망 하시겠습니까?

+0

좋은 답변입니다. Ida Pro에서 출력 serval 서브 루틴 흐름 그래프를 일괄 처리하는 방법을 알고 있습니까? 투기. 내 질문은 여기에 : http : // stackoverflow.com/questions/28619663/ida-pro-gragh-output-batch-mode' – Amir

1

마지막으로 확인한 항목 (Q) WinGraphthis page (VCG tool 기준)에서 수정 된 소스를 가져올 수 있습니다. 유사한

뭔가 (무료 될 것 같지 않습니다)뿐만 아니라 TouchGraph을 사용하십시오 few IDA scripts가 당신은 또한 &을 확인 할 수 있습니다 yED입니다.

관련 문제