Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdarg.h>
- struct intfarm {
- int a;
- int b;
- };
- static void (*hackptr) ();
- static struct intfarm farm;
- static void hack (int, ...);
- static void hackdbg (char *, size_t);
- static void hackfarm(struct intfarm);
- void
- hack(int foo, ...)
- {
- int bar, baz;
- va_list v;
- va_start (v, foo);
- bar = va_arg (v, int);
- baz = va_arg (v, int);
- printf ("foo: %d, bar: %d, baz: %d\n", foo, bar, baz);
- printf ("&foo: %p, &bar: %p, &baz: %p\n", &foo, &bar, &baz);
- hackdbg ((char *)(&foo), sizeof foo);
- hackdbg ((char *)(&bar), sizeof bar);
- hackdbg ((char *)(&baz), sizeof baz);
- }
- void
- hackfarm (struct intfarm f)
- {
- printf ("&f.a: %p, &f.b: %p\n", &(f.a), &(f.b));
- }
- void
- hackdbg (char *data, size_t len)
- {
- size_t i;
- for (i= 0; i < len; i ++)
- {
- printf ("%02x ", data[i] & 0xff);
- }
- printf ("\n");
- }
- int
- main()
- {
- farm.a = 7;
- farm.b = 16;
- hackptr = hackdbg;
- hackptr (&farm, sizeof farm);
- hackptr = hack;
- hackptr (3, farm);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement