Commit graph

12035 commits

Author SHA1 Message Date
Joshua J. Drake
691dd0a5c5 Make "dbt" output aligned to columns based on dbg->bits (#5151)
* Make "dbt" output aligned to columns based on dbg->bits
* Add spaces between sizeof and paren
2016-06-16 22:57:44 +02:00
Joshua J. Drake
2b9edf8dc4 Fixes #5154: Stop including source-file whitespace (#5155) 2016-06-16 22:57:10 +02:00
Joshua J. Drake
e97e011426 Have r_debug_select change IO pids too (#5145) 2016-06-16 22:56:21 +02:00
pancake
5186afdbe4 Only attach io.pid when its different 2016-06-16 22:56:02 +02:00
pancake
4e67a31087 Fix some more =!pid cmd parsing issues 2016-06-16 22:53:16 +02:00
pancake
565c97f8f5 Fix =!pid for io.w32dbg 2016-06-16 22:53:10 +02:00
Joshua J. Drake
fb820f9c8e Fixes #4875: Refactor process listing (#5144)
* Fixes #4875: Refactor process listing
* Move procfs-based process listing into linux_debug.c, guarded by __linux__
* Provide a warning and eprintf a TODO on the remaining platforms.
* Break reusable parts into linux_get_proc_pid and call it as needed.
* Add/remove comments for clarity
* Address feedback and re-enable non-Linux
2016-06-16 22:39:11 +02:00
Lev Aronsky
db8414d186 Fixed order of arguments in ESIL representation of MUL. 2016-06-16 22:33:16 +02:00
UsusDei
5e7c93fc37 Add asm.hints and handle CDOV deoptimization
CDIV deoptimization
===================

This patch implements hints in the disassembler that
aim to assist the user in reading compiler-optimized divisions
by analysing the involved magic number.

Background
==========

Since integer divisions are usually very expensive on most architectures,
compilers try very hard to substitute them with cheaper operations.

One of the more advanced substitutions is described in the book __Hacker's Delight__,
chapter 10.
An actual implementation of the described algorithm in LLVM can be found in the
functions: `TargetLowering::BuildSDIV()` and `APInt::magic()`.

The optimization approximately transforms e.g.

```asm
xor edx, edx
idiv 39
```

into

```asm
mov eax, edi
mov edx, 0xd20d20d3
imul edx
lea eax, [rdx + rdi]
sar edi, 0x1f
sar eax, 5
sub eax, edi
```

Reading the optimized version and __seeing__ the constant 39 seems difficult.
Therefore I try to provide a small hint to the user.

Limitations
===========

* The current implementation only takes the magic number into account,
  therefore it may result in false positives.

* Due to the nature of the optimization, the given hint may be off by a power of two.
  Fixing this would require to analyse the following shift instructions.

* The hint is only shown in the line containing the magic number.
  The user still has to know which of the following instructions belong to the optimization.

TODO
====

* Implement the corresponding analysis for unsigned integers

* Implement the corresponding analysis for 64-bit integers.

* Improve the heuristic by also looking at the next few instructions.
  ( I don't really know how to iterate over the instructions in the disassember
  in a non-deprecated way. Maybe someone can drop me a hint? )

* Implement an exact analysis using the actual dataflow in radeco and use it
  to revert the optimization. ( I suppose this is outside the scope of radare )
2016-06-16 22:22:58 +02:00
pancake
48e5f8fc7e Fix ELF crash (null deref when missing shdr 2016-06-16 22:18:10 +02:00
Joshua J. Drake
176054c006 Fix ELF section size validation (#5148) 2016-06-16 16:43:04 +02:00
Joshua J. Drake
285cd3b32f Minor tweaks to breakpoint handling
* Fix "dbm" help string
* Save <module>+<offset> as the name when using dbm
* Fix allocation patterns for "module"
* Remove commented out code
* White space fixes
2016-06-16 12:36:17 +02:00
pancake
d3cae9d5a9 Show classname for static methods in DEX 2016-06-16 12:30:38 +02:00
pancake
b843aaf054 Fix imports and enhance parsing virtual methods in DEX 2016-06-16 05:04:00 +02:00
pancake
1111c00ea2 Better names for virtual Dalvik methods 2016-06-16 02:42:54 +02:00
pancake
b50a06f57c Load virtual methods from Dex files 2016-06-16 02:33:59 +02:00
pancake
5c14841299 Support op->family and some op->cycle for anal.arm64 2016-06-16 01:43:41 +02:00
Jeffrey Crowell
2f6d778aef cleanup usages of r_str_newf to meet style guide 2016-06-15 19:42:03 +00:00
Sven Steinbauer
d45101eebe Add offset support to add instruction (#5137)
support syntax for

add eax, [ecx]
add ecx, [eba +/- 3]
2016-06-15 15:33:14 +02:00
pancake
794c60bf18 Fix #5138 - huge load times for fuzzed versioninfo ELFs 2016-06-15 15:30:51 +02:00
pancake
0e9e80c578 Fix #5138 - crash in elf parser 2016-06-15 15:13:41 +02:00
pancake
84aa6782f1 Add trailing newline in afbj 2016-06-15 13:41:45 +02:00
Riccardo Schirone
04190287c1 core: fix uber confusing indentation in cmd_anal "afl" command 2016-06-15 11:15:42 +02:00
pancake
1bdcb740dc Fix regressions introduced in last commit 2016-06-15 00:23:44 +02:00
pancake
e032a48cbe Fix latest 26 COVs 2016-06-14 23:47:58 +02:00
Álvaro Felipe Melchor
7fa01a72ed add breakpoints into project file 2016-06-14 23:34:42 +02:00
pancake
2582e5fd0e Fix #5134 - rahash2 -K entropy was randomized by uninitalized values 2016-06-14 20:29:49 +02:00
robbje
a772452d27 Cgs (#5126)
* refactor function listing code

* adhere to style guide

* use tabs instead of spaces

* recover default behaviour for afi commands

* work in commentary and fix the two regression tests I broke

* some more cosmetic changes

* shorten function names
2016-06-14 17:54:17 +02:00
pancake
f5cb1db49b Fix identifying classes#.dex as DEX (not a BIOS) 2016-06-14 17:00:42 +02:00
pancake
6bd3f5199b Fix #4980 - Fix apk:// and implement ipa:// 2016-06-14 14:36:15 +02:00
pancake
e4af7f9b23 Fixes for ELF/Thumb detection handling 2016-06-14 14:36:03 +02:00
pancake
ecef139c99 Fix io.ptrace.write on ARM 2016-06-10 05:27:21 +02:00
pancake
1bb7efd76c Some more COV checks in socket.run 2016-06-14 04:00:30 +02:00
pancake
21a01d08fe Fix warnings in debug.linux.coredump 2016-06-10 04:20:28 +02:00
pancake
e9f14cb4a0 Fix 4b85cff331 util.calc regression 2016-06-14 03:22:43 +02:00
pancake
8d9e4a7836 Fix double close in thread-list and non-null terminated string in debug.linux.core 2016-06-14 03:10:47 +02:00
pancake
7ff42b590f Fix build and bring back java memleak to avoid crash 2016-06-14 02:54:27 +02:00
pancake
69e7b3df28 Fix UAF in bin.psxexe 2016-06-14 02:44:52 +02:00
pancake
59f94c63aa Fix some critical COVs in RBin 2016-06-14 02:42:24 +02:00
pancake
69d62e85c3 Fix deadcode in rbuf 2016-06-14 02:30:22 +02:00
pancake
46433dbf53 Fix some COVs in util/file 2016-06-14 02:22:14 +02:00
pancake
4b85cff331 Fix buffer overflow in r_num_math 2016-06-14 02:19:20 +02:00
pancake
010c2c68ab Fix all COVs in r_io 2016-06-14 02:14:52 +02:00
pancake
93910d9ce0 Fix memleak in shlr/java 2016-06-14 02:04:26 +02:00
pancake
702394caf9 Fix string flags realignment in disasm 2016-06-14 01:52:46 +02:00
pancake
f8b5a6602a Boolify anal.xrefs/projects 2016-06-14 01:40:46 +02:00
pancake
56af25e5b5 Update r_core_sysenv_end 2016-06-14 01:33:46 +02:00
pancake
eda7899adc Various enhancements to aae 2016-06-14 01:30:40 +02:00
pancake
ed06c5bcb6 Fix arm64 analysis issue 2016-06-14 00:13:04 +02:00
radare
60ac486de1 Merge pull request #5117 from radare/arm-fixes
ARM fixes
2016-06-13 17:26:16 +02:00