Skip to content
Snippets Groups Projects
  1. Jul 27, 2021
    • Jason Hiser's avatar
      ZS-86 issue in parsing dynsym section. · d678a840
      Jason Hiser authored
      The dynsym section is parsed by objdump/grep.  It's terrible and
      needs to be implemented in C++ to reduce dependence on external tools
      knowing what they are doing.
      
      In this case, the terrible pattern matching with grep caused a symbol
      defined in the binary to be missed, because `grep -v UND` was used
      to determine whether a symbol "mattered".  1) symbol names might have
      UND and get eliminated accidentally, but 2) (what really happened)
      was that the symbol was defined in a section without a "link" field
      in the dynsym section, thus objdump displayed the section name as UND
      and thus the code skipped the symbol.  Don't use objdump to parse ELF
      files!
      d678a840
  2. Jul 22, 2021
  3. Jul 20, 2021
    • Jason Hiser's avatar
      Fix x86/32 issues for Ubuntu 20.04 · 8546a654
      Jason Hiser authored
      Rida: Parsing of .plt.sec section added for x86/64 ubuntu 20 needed to be
      updated to support x86/32 in ubuntu 20.
      
      Fix-calls: Thunk checks aged poorly.  Revived/fixed some of them.
      8546a654
  4. Jun 12, 2021
    • Jason Hiser's avatar
      Updated rodata scanner to skip pins without relocs in shared libs · 6e68317a
      Jason Hiser authored
      Shared libs need a reloc for a code pointer to live in rodata.
      I found in ffmpeg that many spurious pins were occuring because constant
      (particularly with relatively small values) data looked like code poitners
      (because the code's load point is address 0 in a shared library).
      
      To avoid these spuriosu pins, I extended the code pin algorithm
      to check isDLL() (which includes shared objects) and for a reloc
      before attempting to pin in the rodata.
      
      A perf. optimization verifies that it _might_ result in a pin
      before checking for a reloc, as checking for a reloc can be slow,
      while checking for a possible pin location is fast.
      6e68317a
  5. Apr 27, 2021
  6. Apr 26, 2021
    • Jason Hiser's avatar
      Update threshold for min. switch table size for ubuntu20. · 9f222161
      Jason Hiser authored
      Table size min was set to <=4 items, but readelf on ubuntu20
      had a switch table with exactly 4 elements.  This caused
      FII to miss the table size and subsequently include _many_ extra IBTs.
      Ultimately, Zipr failed by trying to 68-sled an entire function due to
      FII's failure.
      9f222161
  7. Apr 21, 2021
  8. Mar 12, 2021
  9. Mar 02, 2021
  10. Mar 01, 2021
  11. Feb 28, 2021
  12. Feb 25, 2021
  13. Feb 21, 2021
  14. Feb 18, 2021
  15. Feb 17, 2021
  16. Feb 11, 2021
  17. Feb 10, 2021
  18. Feb 01, 2021
  19. Jan 29, 2021
  20. Nov 14, 2020
  21. Sep 02, 2020
  22. Aug 16, 2020
  23. Jul 28, 2020
  24. Jul 22, 2020
  25. Jul 17, 2020
  26. Jul 10, 2020
  27. Jun 26, 2020
  28. Jun 25, 2020
    • Daniel Chen's avatar
      Rework the assembly-string->binary conversion. · 6cb3e237
      Daniel Chen authored and Jason Hiser's avatar Jason Hiser committed
      The old method involved writing assembly to a file, asking an external assembler to do the conversion, then processing the binary file to read the binary instructions back out.  This method is slow and relies on nasm, which isn't available on all machines or for the full variety of supported architectures.  The replacement is keystone, a 3rd party library that is linked to provide assembly->binary conversion.
      6cb3e237
  29. May 15, 2020
  30. Apr 29, 2020
  31. Dec 18, 2019
  32. Dec 17, 2019
  33. Dec 16, 2019
Loading