obf.c 489 B

123456789101112131415161718192021222324252627
  1. #include "obf.h"
  2. #include <stdbool.h>
  3. #define LOWER_HALFBYTE(x) ((x) & 0xF)
  4. #define UPPER_HALFBYTE(x) (((x) >> 4) & 0xF)
  5. void deobfuscate_str(char *str, uint64_t val)
  6. {
  7. uint8_t *dec_val = (uint8_t*)&val;
  8. int i = 0;
  9. while (*str != 0) {
  10. int pos = i / 2;
  11. bool bottom = (i % 2) == 0;
  12. uint8_t *ch = (uint8_t*)str;
  13. uint8_t xor = bottom ?
  14. LOWER_HALFBYTE(dec_val[pos]) :
  15. UPPER_HALFBYTE(dec_val[pos]);
  16. *ch ^= xor;
  17. if (++i == sizeof(uint64_t) * 2)
  18. i = 0;
  19. str++;
  20. }
  21. }