Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Compile as C code, not C++
- #include <stdio.h>
- #include <stdarg.h>
- int __cdecl fxn(const char* format, ...)
- {
- int r;
- void* p = NULL;
- va_list vl;
- va_start(vl, format);
- r = vprintf(format, vl);
- va_end(vl);
- __asm
- {
- mov p, esp
- }
- printf("ESP = %X\n", p);
- return r;
- }
- int (__stdcall * pfxn)() = (int(__stdcall*)())&fxn;
- int main(void)
- {
- fxn("Hello world %d!\n", 1);
- fxn("Hello world %d!\n", 2);
- fxn("Hello world %d!\n", 3);
- pfxn("Hello world %d!\n", 4);
- pfxn("Hello world %d!\n", 5);
- pfxn("Hello world %d!\n", 6);
- /*
- Sample output:
- Hello world 1!
- ESP = CFE14
- Hello world 2!
- ESP = CFE14
- Hello world 3!
- ESP = CFE14
- Hello world 4!
- ESP = CFE14
- Hello world 5!
- ESP = CFE0C
- Hello world 6!
- ESP = CFE04
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement