2013-07-20 3 views
-1

편집 : OllyDBG에서 가능하다는 것을 알고 있지만 작동시키기 위해 런타임 버전 (CPP)이 필요합니다.대상 기능의 변경은 완전히 완료되지 않았습니다.

this 스위치 내부에 기능 (의사 코드)이 있습니다. 케이스 115의 작동을 수정하고 싶습니다. 내가 예를 들어, 지침,이 경우 특정 부분에서 대체하려는

sub_100CE3E8(a1, v19); 
break; 

1024185D 8B45 E8   MOV EAX,DWORD PTR SS:[EBP-18] 
10241860 50    PUSH EAX 
10241861 8B4D 08   MOV ECX,DWORD PTR SS:[EBP+8] 
10241864 51    PUSH ECX 
10241865 8B0D A0B12A10 MOV ECX,DWORD PTR DS:[102AB1A0] 
1024186B E8 78CBE8FF  CALL somelib.100CE3E8 

그리고

(케이스 (115)) : 변경 CALL 100CE3E8 그것은처럼 보이는 100CF1E9

를 호출 1024186B

저는 이러한 종류의 작업을 수행하기 위해 MS Windows Detours 1.5를 사용하고 있으며 대부분의 경우 잘 작동합니다.

void hSwitchFunction(int a1) 
    {         
     //So what should I put here to jump directly to 1024185D, 
     //and don't replace the function completely? 
     //I mean I want to modify just the part of this function. 
    } 

//somewhere in the code 
DetourFunction((PBYTE)0x10241630, (PBYTE)hSwitchFunction); 
//somewhere in the code 

답변

1

제공 한 코드에서 스위치의 변수는 필요한 값을 반환하는 함수에서 온 것입니다. 그리고 코드에서 볼 수 있듯이. 이 값에 포인터를 추가하면 값 마녀가 감소하여 v14로 이동했습니다. 그런 다음 스위치에서 사용합니다. 함수에서 호출하는 경우도 있습니다. 어떤 경우에는 이 중요 할 수 있습니다. 동일한 변경 사항을 복사하여 스위치에서 사용하기 만하면됩니다.

+0

나는 그것을 알고 있지만 의사 코드를 hSwitchFunction 본문에 넣는 방법을 모른다. 그래서 나는 그것의 부분을 수정할 수 있습니다. – deepspace