2013-07-20 4 views
-1

EDIT: Je sais que c'est possible avec OllyDBG, je l'ai fait fonctionner mais j'ai toujours besoin de la version d'exécution (CPP) pour que je puisse y sauter.Changer le comportement de la fonction cible mais pas complètement

En this fonction (pseudo-code) à l'intérieur du commutateur Je voudrais modifier les opérations dans le cas 115 par ex. changement APPEL 100CE3E8 à l'appel 100CF1E9

Il ressemble à:

(cas 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 

Et je voudrais remplacer dans cette partie spécifiée cas d'instructions, par exemple J'utilise MS Windows Detours 1.5 pour effectuer ce genre d'opérations et cela fonctionne bien dans la plupart des cas.

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 

Répondre

1

Dans le code que vous avez donné, la variable du commutateur provient de la fonction qui renvoie la valeur dont vous avez besoin. et comme vous pouvez le voir dans le code. qu'à cette valeur, ils ajoutent un pointeur, diminuant la valeur qui passe à v14. puis en l'utilisant dans le commutateur. Notez également qu'ils l'appellent à partir de la fonction. dans certains cas, il peut être important. Tout ce que vous avez à faire est de copier les mêmes changements et de les utiliser dans votre commutateur.

+0

Je le sais mais je ne sais pas comment placer le pseudo-code dans le corps hSwitchFunction. Donc, je pourrais en modifier certaines parties. – deepspace

Questions connexes