나는 dll을 프로그래밍한다. 이 dll에서는 메모리에로드 된 다른 dll 함수를 연결하려고합니다. 이것은 많은 근무 시간의 결과입니다.C++ function hook (dll, asm)
typedef int (__fastcall *def_cry)(int a,int b,int fromlen);
def_cry Real_cry;
int __fastcall custom_cry(int a,int b,int fromlen) {
Log("cry ...");
__asm nop;
return Real_cry(a, b, fromlen);
}
DWORD imageBaseOtherDll = 0x39500000;
DWORD functionOffset = 0x395742F8;
DWORD imageBase = (DWORD)GetModuleHandle("otherDll.dll");
DWORD functionOffset = imageBase + (functionOffset - imageBaseOtherDll);
Real_cry = (def_cry)DetourFunction((PBYTE)functionOffset,(PBYTE)&custom_cry);
내 걸음이 작동하지 않는 것처럼 보입니다. 나는 코드에 논리적 인 오류를 넣었다고 생각하지만 초보자이고 단도직입 적 도움이된다!
asm - 지금까지 시도한 내용과 문제가 무엇인지 생각해보십시오. 문제의 초점을 좁히십시오. 당신이 "이걸보고 고칠 수 있니?"라고 물으면 귀하의 질문은 투표로 마감됩니다. – Josh
(+1) - 녀석은 새로운 사람이고, 그를 "-1ing"하여 stackoverflow에서 도망 치고 싶지는 않습니다. 나는 그 질문이 꽤 분명하다고 생각합니다. – Cipi