r=exec_event_proc("RegisterProductTestEvent")print(r)sleep(1000)r=exec_event_proc("PT_PlaySound",0x2001)print(r)sleep(1000)
Nice find!Hijacking functions would be one of the coolest things ever, so long as they are called from the eventproc and not directly..Did you check how this mechanism works? How does ExecuteEventProcedure associate the name of the function with the pointer? Is there some table or structure where this stuff is held? If so, it would be trivial to get all the functions in the stubs without messy and inaccurate signatures..
int __attribute__((naked,noinline)) ExecuteEventProcedure(const char *name,...) {asm("BL _ExecuteEventProcedure\n""BX LR\n");}
Would it work to have a C function (thumb mode) that puts all the arguments in a list in the memory, then have a non thumb function that takes those arguments from the memory and place them in the registers/stack and then call ExecuteEventProcedure?
Were you able to determine at what point those procedures are registered with ExecuteEventProcedure?I was thinking, for example, that if they are initialized very early in the startup function, before the extended lens check, one could unregister the function that does the check, and register a null function instead.
Started by kostadagreat Hello, I'm a NEWBIE - HELP!! (Newbies assistance, User Guides and thank you notes)
Started by flarn2006 LUA Scripting
Started by outslider Script Writing
Started by HrClausen Completed and Working Scripts
Started by pigeonhill Script Writing