2010-12-28 8 views
1

다른 프로세스의 주소 공간에 .dll을 삽입했습니다. 타겟 앱은 QT 라이브러리를 사용합니다. 우회로를 삽입하여 QT 함수 ? rowsInserted @ QListView @@ MAEXABVQModelIndex @@ HH @ Z가 my 함수라고 호출 될 때마다 대신 호출되어 호출이 전달되도록 할 수 있습니다. 그러나 전달 된 매개 변수에 대한 액세스 권한을 얻으려면 어떻게해야합니까? rowsInserted @ QListView @@ MAEXABVQModelIndex @@ HH @ Z? 이 이름이 왜곡 되었습니까?이 경우 정상적으로 무엇입니까?IAT 후킹, QT 라이브러리

감사합니다.

+0

이 실제로 제대로 기능을 우회 할 수 없습니다. 그렇지 않으면 앱이 다운됩니다. Qt 문서를보고이 메소드의 설명을 찾으십시오. 그리고 확실히, 이것이 dll에서 실제로 내보내 졌는지 확인해야합니다. – Andrey

답변

1

기능이 아마도 QListView::rowsInserted(const QModelIndex &, int, int) 인 것처럼 보입니다. 매개 변수는 함수 참조에 나열되어 있습니다.

+0

그렉 고마워, 어떻게 해결할 수 있니? 아니면이게 가장 가까운 건가? 또한 이름이 왜곡되어 있습니까? 마음에 드는 또 다른 질문은 IDA가 이름을 왜곡시키는 책임이있는 사람이었을까요? 다시 한번 감사드립니다. – flavour404

+0

맹 글링 된 이름은'rowsInserted @ QListView @@'로 시작되었고, MSVC가'QListView' 클래스에서'rowsInserted'라는 함수를 위해 이름을 변경한다는 것을 알았습니다. 그 이름으로 단 하나의 기능 만 나타납니다. 컴파일러가 IDA가 아닌 이유에 대한 자세한 내용은 [Name mangling] (http://en.wikipedia.org/wiki/Name_mangling)을 참조하십시오. –

1

undname 도구를 사용하여 함수 호출을 장식 할 수 있습니다. Visual C++와 함께 제공됩니다.
레이몬드 첸은 그것에 대해 블로그 : 당신이 바로 그 서명 (및 x86 애플리케이션을위한 호출 규칙을) 알지 못한다면 Undecorating names to see why a function can't be found

C:\Program Files\Microsoft SDKs\Windows\v7.1>undname [email protected]@@[email protected]@[email protected] 

Undecoration of :- "[email protected]@@[email protected]@[email protected]" 
is :- "protected: virtual void __thiscall QListView::rowsInserted(class QModelIndex const &,int,int)"