Advertisement
Guest User

Untitled

a guest
Dec 11th, 2023
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.70 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #include "black_magic.h"
  4.  
  5.  
  6. typedef int (*func) (void *, void *, size_t);
  7.  
  8. #define NFUNCS 3
  9.  
  10. int f0(void *dst, void *src, size_t n) { ... }
  11. int f1(void *dst, void *src, size_t n) { ... }
  12. int f2(void *dst, void *src, size_t n) { ... }
  13.  
  14. func funcs[NFUNCS] = {
  15.     f0, f1, f2
  16. };
  17.  
  18.  
  19. int _wrapper(void *dst, void *src, size_t n)
  20. {
  21.     printf("%p %p %lu\n", dst, src, n);
  22.     return ((func)black_magic_get_wrapper())(dst, src, n);
  23. }
  24.  
  25.  
  26. void init()
  27. {
  28.     for (int i = 0; i < NFUNCS; i++) {
  29.         black_magic_wrap(funcs[i], _wrapper);
  30.     }
  31. }
  32.  
  33.  
  34. int main(void)
  35. {
  36.     int x = 13;
  37.     int y;
  38.    
  39.     ((func)(funcs[1]))(&y, &x, sizeof(int));
  40.    
  41.     return 0;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement