Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void JmpFunction::operator() ()
- {
- g_CurrJmpFunc = this;
- if(!m_PreparedArguments) PrepareArguments(); // Not important
- DWORD t_Addy;
- if(m_Offset==0) // Are we supposed to start at the function start (0) or somewhere else (m_Offset)?
- t_Addy = (DWORD)m_Function;
- else t_Addy = m_Offset; // If this happens, we called StartHere()
- int t_StackSize = m_Stack.size(); // Number of arguments
- int t_StackSizeBytes = t_StackSize*sizeof(void*); // byte size
- for(int i = t_StackSize-1; i>=0; i--) // For each argument
- {
- DWORD t_Argument = (m_Arguments[i]);
- __asm
- {
- mov eax, t_Argument // push onto stack
- push eax
- }
- }
- __asm // call and stack inc
- {
- call t_Addy
- add esp, t_StackSizeBytes
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment