- Jul 20, 2022
-
-
Jason Hiser authored
-
Jason Hiser authored
-
- Jul 11, 2022
-
-
- May 19, 2022
-
-
Jason Hiser authored
Address issue with one table being unpinned, and another table not being unpinned.
-
- May 04, 2022
-
-
Jason Hiser authored
Fixed calls break exception handling, and largely aren't needed anymore. We were still "fixing" calls when it had no fallthrough instruction, assuming the call is used for something else. Except that sometimes a "call _cxa_throw" ends a function/section and legitimately has no fallthrough. And this breaks the exception handling. Testing this fix against the Zipr test suite to verify that it is OK on a large suite of programs.
-
- Apr 27, 2022
-
-
Jason Hiser authored
-
- Apr 25, 2022
-
-
Jason Hiser authored
-
-
- Apr 22, 2022
-
-
Jason Hiser authored
Also added tests.
-
- Apr 21, 2022
-
-
Andreas Wendler authored
-
- Apr 16, 2022
-
-
Andreas Wendler authored
The main problem is the use of an addition instead of a multiplication for scale values. In addition, to make sure the result can be used to create new instructions from assembly, all generated numbers must be in hex.
-
- Jan 10, 2022
-
-
Jason Hiser authored
-
- Jan 08, 2022
-
-
Jason Hiser authored
-
- Dec 31, 2021
-
-
Jason Hiser authored
-
- Dec 29, 2021
-
-
- Dec 20, 2021
-
-
Jason Hiser authored
Found bug resulting from hidden static variable in ctime() function.
-
Jason Hiser authored
-
- Dec 09, 2021
-
-
Jason Hiser authored
Was previously asserting isRegister() or isMemory(), but could also be isConstant().
-
Jason Hiser authored
-
Jason Hiser authored
-
- Nov 30, 2021
-
- Nov 28, 2021
-
-
Jason Hiser authored
* Update 68-sled code to be keystone friendly * Corrected spelling of getInstruction. removed extraneous assert. * Disable should-pin-immediately because it interfers with sleds. * Remove assert from fix-calls about odd prefixing, just dont fix the call. More of an issue with FII doing disassembly * Update switch->code discovery path to only happen if switch table is in text segment * fixed FII to do what the last commit said -- only disassembly when TABLE is in text. also patched zipr to handle xbegin gracefully. * Disable verbose setting * Create lots of dbs instead of just a few
-
- Nov 22, 2021
-
-
Jason Hiser authored
Update find-in-function method to be more vague about the leas it finds when precise-switch-statement finding is impossible
-
- Nov 21, 2021
-
-
Jason Hiser authored
-
- Nov 17, 2021
-
-
Jason Hiser authored
Issue was related to intermediate set of the compare register. Leveraged backup_until's stopif argument to stop backup until sooner. Note: as indicated in code comment, single register/register move is common and could be used to improve accuracy.
-
Jason Hiser authored
1) FII was finding the wrong cmp for switch tables. Removed the blind cmp and forced the cmp to use the proper register or not find a cmp. Also changed the limit for a table size when no cmp is found from 2^32 to 255. 2) Fixed an issue with zipr dollop layout where the size to layout 1 instruction + a trampoline was bigger than laying out two+ full dollops (because both dollops were short), but the dollops are disallowed from being coalesced. The worst-size detector needed to account for non-coalescable dollops.
-
- Nov 15, 2021
-
-
Jason Hiser authored
-
- Nov 11, 2021
-
-
Jason Hiser authored
-
- Sep 24, 2021
-
-
Jason Hiser authored
-
- Sep 17, 2021
-
-
Jason Hiser authored
-
- Sep 15, 2021
-
-
Jason Hiser authored
Debugging code allows for one to binary-search the unpins. But a .dynsym, .got, etc. entry can be duplicated in it's own section or other sections. Unpinning has to handle unpinning an instruction and deal with updating all tables properly. Bug was found in handling of the unpin for .dynsym in this regard. This patch fixes that bug.
-
Jason Hiser authored
-
- Sep 14, 2021
-
-
Jason Hiser authored
-
Jason Hiser authored
-
- Aug 12, 2021
-
-
Jason Hiser authored
-
- Aug 11, 2021
-
-
Jason Hiser authored
In particulate, an alternate version of switch tables was being mis-detected by FII. In particular, switch tables were assumed to be size=4, but we found size!=4 in sqlite (in particular, size=8). And, I know windows binaries have size=1,2. Also fixed an issue where lea reg1, [reg2+reg3] assumed reg2/reg3 had values (i.e., reg2 is the base address of a switch table), when reg3 might have the value. Fixed the assumption by tracing both reg2+reg3. Some minor code cleanups.
-
- Aug 10, 2021
-
-
Jason Hiser authored
-
- Aug 05, 2021
-
-
Jason Hiser authored
-
- Aug 04, 2021
-
-
Jason Hiser authored
-
- Jul 27, 2021
-
-
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!
-