2014-08-26 04:56:48 +08:00
|
|
|
____ ___ ___ ___ ____ ___ _____ ____
|
|
|
|
| _ \/ \| \/ \ _ \/ _ \ \__ \ / \
|
|
|
|
| ( V \ | ) V \ ( __/ .-` _/| () |
|
|
|
|
|__\__|_|__|___/__|__|_\__\___\ |____(_)____/
|
2011-02-03 16:31:50 +08:00
|
|
|
|
2012-12-01 07:15:19 +08:00
|
|
|
|
2013-03-05 08:28:32 +08:00
|
|
|
* libr/debug/p/drx.c <- not used .. debug must have a hw reg api for drx and gpio
|
2013-03-04 07:33:14 +08:00
|
|
|
* ah -> add hint to define calls that do not return
|
2013-01-30 02:39:41 +08:00
|
|
|
* rabin2 -x should not work on non-fatmach0 files
|
2013-01-24 10:48:24 +08:00
|
|
|
* foldable stuff .. was in r1..redo?
|
2013-01-22 12:06:12 +08:00
|
|
|
* cmp rip+xx -> not resolved wtf
|
2012-10-03 22:32:32 +08:00
|
|
|
* search for CALL instructions in text segment.
|
|
|
|
- analyze the destination address of each call destination
|
2013-02-06 17:35:23 +08:00
|
|
|
* integrate dwarf parser with disassembler and debugger
|
|
|
|
* step back .. log all state changes on every debugger stop
|
|
|
|
* timeout for code analysis (check timestamp)
|
2013-01-05 06:24:37 +08:00
|
|
|
- add analysis points continuation, so 'aa' can be used progressively
|
2012-08-02 07:50:39 +08:00
|
|
|
* Allow to seek to branch N like in visual, but from cmdline
|
2012-06-26 21:21:48 +08:00
|
|
|
* refactor vmenus.c -> refresh function must be redefined for each menu
|
2012-06-14 16:01:16 +08:00
|
|
|
// show hints for
|
|
|
|
0x100005eca ff2540130000 jmp qword [rip+0x1340] [1]
|
2012-06-07 09:41:21 +08:00
|
|
|
* Implement debugger backtrace properly
|
2012-06-06 08:17:02 +08:00
|
|
|
* crackme mach0 happy with rbin
|
2012-05-31 08:41:45 +08:00
|
|
|
* if no debugger supported, say so... r_io must ?
|
2012-05-30 17:14:41 +08:00
|
|
|
* check search multiple keywords and signatures
|
2012-07-16 17:39:43 +08:00
|
|
|
* search for antidebug/disasm tricks opcodes
|
|
|
|
- allows to find interesting points to analyze
|
2012-06-06 08:17:02 +08:00
|
|
|
* use slices for r_list_iter primitives
|
2012-05-30 09:32:20 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
BUGS
|
|
|
|
----
|
2012-02-01 23:53:46 +08:00
|
|
|
* RBinCreate:
|
|
|
|
- mach0 create for darwin-ppc
|
2012-03-07 17:43:02 +08:00
|
|
|
- mz
|
2012-02-01 23:53:46 +08:00
|
|
|
- pe64
|
|
|
|
- plan9 bins
|
2013-01-05 06:24:37 +08:00
|
|
|
* Implement support for args in 'oo' (like in r1s !load debugger..)
|
2012-02-01 23:53:46 +08:00
|
|
|
* opening a file from inside r2 doesnt clears internal data (strings..)
|
|
|
|
* backtrace for linux or osx at least
|
2011-11-24 16:50:40 +08:00
|
|
|
* implement 'ax' to get/set xrefs (better than afl <addr>) .. or afx?
|
|
|
|
* shell encoder - get x86-64 one from twitter
|
|
|
|
- http://funoverip.net/2011/09/simple-shellcode-obfuscation/
|
|
|
|
- shellforge.. and review current shellcodes :?
|
2012-02-01 23:53:46 +08:00
|
|
|
* rasm2 must support binary creation help message or so..
|
|
|
|
- rabin2 integration must be easier
|
|
|
|
|
2015-01-12 07:11:06 +08:00
|
|
|
* Add support for classes in c++, objc, java, swift binaries
|
2012-05-30 17:14:41 +08:00
|
|
|
- command to add new classes
|
2011-11-01 19:59:07 +08:00
|
|
|
* Tracing support for the debugger
|
|
|
|
- "e cmd.trace=dr=;.dr*;pd 2@eip"
|
|
|
|
- dca sym.main imp.printf
|
|
|
|
- dbc
|
2011-11-24 16:50:40 +08:00
|
|
|
|
2011-06-07 23:53:15 +08:00
|
|
|
** BUG **
|
|
|
|
* fix for indirect list manipulations -- looks like a similar problem with r_cons recusivity
|
|
|
|
- when you are iterating a list you CANT remove items from it
|
|
|
|
- this is..you CANT call r_core_cmd() while iterating flags unless you want to crash
|
|
|
|
- we probably need to queue the deletions and use a commit-like methodology
|
|
|
|
- this way we avoid duplications
|
2012-05-30 17:14:41 +08:00
|
|
|
RListBox *b = r_flag_get_list ();
|
2011-06-07 23:53:15 +08:00
|
|
|
r_list_foreach (b, iter, item) {
|
|
|
|
r_list_delete_iter_later (b, iter);
|
|
|
|
}
|
|
|
|
r_list_commit (b);
|
|
|
|
|
2011-05-24 21:25:52 +08:00
|
|
|
* Add r_cons_prompt () ... calling set_prompt + fgets -- this api needs cleanup
|
|
|
|
- set prompt, set line, fgets
|
|
|
|
- strict width in visual
|
|
|
|
|
2011-01-24 01:19:03 +08:00
|
|
|
nibble
|
|
|
|
------
|
2011-09-03 09:10:01 +08:00
|
|
|
* Analyze this opcode: ff2518130000 jmp qword [rip+0x1318]
|
|
|
|
* Support for proper analyze of TinyPE binaries
|
2011-03-18 02:05:39 +08:00
|
|
|
* Do not show XREF info if in the same function?
|
2011-02-27 02:48:01 +08:00
|
|
|
* r_anal
|
2011-08-30 06:42:18 +08:00
|
|
|
- Code analysis (detect when an argument is a flagmask or
|
|
|
|
enum and display text format) (ollydbg)
|
2011-02-27 02:48:01 +08:00
|
|
|
* r_bin
|
|
|
|
- PE: native subsystem? http://radare.org/get/w32/mrxnet.tgz
|
|
|
|
* Fix RAnalCond
|
2011-02-25 11:19:30 +08:00
|
|
|
* code analysis must resolve jump tables
|
|
|
|
* allow to hook r_asm_disassemble and assemble with custom callbacks
|
|
|
|
- extend a disassembler with own instructions.
|
2011-02-24 03:53:56 +08:00
|
|
|
* For each "call" or "push offset"+"ret" create a function.
|
|
|
|
- And, if deep code analysis is enabled:
|
|
|
|
- Search every possible function by searching typical prologs and put them in a queue.
|
|
|
|
- Perform the same actions as in the previous steps with the entry points.
|
|
|
|
* detect strings in code analysis
|
2011-02-03 16:31:50 +08:00
|
|
|
* register renaming (per-instruction or ranges)
|
|
|
|
- r_parser fun? a specific asm.parser plugin that does all this tricks?
|
2011-02-12 19:54:26 +08:00
|
|
|
* Display getsym() stuff in rabin2, not only legit syms
|
|
|
|
* dmi command must read from memory if no file path provided
|
|
|
|
- rabin from memory ftw, to get libnames of dll, so..
|
|
|
|
* add support for sign/unsigned registers..or at least a way to cast them
|
|
|
|
* use r_anal_value everywhere
|
|
|
|
* diff code analysis
|
|
|
|
- diff two programs
|
|
|
|
1st level:
|
|
|
|
- check all functions EQUAL, DIFFERENT, REMOVED, ADDED
|
|
|
|
- check all symbols
|
|
|
|
- check all imports
|
|
|
|
- check all strings
|
|
|
|
2nd level:
|
|
|
|
- basic block level diffing (output in graph mode)
|
|
|
|
|
2011-02-25 11:19:30 +08:00
|
|
|
earada
|
|
|
|
------
|
|
|
|
* Add print support for bitfields (pm b...)
|
2011-03-21 08:47:17 +08:00
|
|
|
* Fix io_haret memory dump
|
|
|
|
* refactor rap and raps
|
2011-02-25 11:19:30 +08:00
|
|
|
* remove all uses of alloca() // mingw and grep reports them all :)
|
|
|
|
* typedef all function pointers, like in r_bp
|
|
|
|
* Implement /. to search using a file .. isnt zignatures about this?
|
|
|
|
* Implement search and replace /s
|
|
|
|
- insert or append? (see r1 cfg vars)
|
2011-01-24 01:19:03 +08:00
|
|
|
|
2011-06-09 00:15:19 +08:00
|
|
|
Assembler
|
|
|
|
---------
|
|
|
|
* Embed bits/arch/endian in a separated structure
|
|
|
|
- So one can change from one arch to another with a pointer
|
|
|
|
- Cool for defining ranges of memory
|
2011-01-23 20:54:17 +08:00
|
|
|
|
2012-10-04 07:20:00 +08:00
|
|
|
* radare2
|
|
|
|
- Import msdn doc as comments
|
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
RDB
|
|
|
|
---
|
2012-10-04 07:20:00 +08:00
|
|
|
- Implement iterators r_db_next() and r_db_prev() (HIGH PRIO)
|
|
|
|
- Write test programs to ensure the data is stored correctly
|
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
RSearch
|
|
|
|
-------
|
|
|
|
* Test r_search_delta()
|
2012-10-04 07:20:00 +08:00
|
|
|
- The pattern finding functions are not following the design
|
|
|
|
of the rest of the library, it needs a redesign and code cleanup
|
|
|
|
(see bytepat.c)
|
|
|
|
- Implement radare/src/xrefs.c into r_search
|
|
|
|
- Add support to change the case sensitive of searchs (ignore case)
|
|
|
|
- This must be keyword-based. Not globally
|
|
|
|
- Sync vapi (r_search_regexp not implemented)
|
|
|
|
- Enable/disable nested hits? (discuss+ implement in parent app?)
|
|
|
|
- Just skip bytes until end of keyword
|
2011-02-28 20:29:04 +08:00
|
|
|
* AES/RSA Key finding
|
2015-01-12 07:11:06 +08:00
|
|
|
http://citp.princeton.edu/memory/code/ <- implement this
|
2012-10-23 15:40:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
Binaries
|
|
|
|
--------
|
2011-01-23 20:54:17 +08:00
|
|
|
* add support for .a files (r_fs supports cpio and ar archives...)
|
2012-11-21 01:42:23 +08:00
|
|
|
* add support for .rar files
|
2012-10-23 15:40:13 +08:00
|
|
|
|
|
|
|
# Random
|
2011-01-23 20:54:17 +08:00
|
|
|
* Implement rap:// upload/download protocol commands (maybe just system() with rsc2+wget?
|
2012-10-23 15:40:13 +08:00
|
|
|
* Reimplement or fix the delta diffing in C - first we need to do it for ired..
|
|
|
|
* Ranged/scrollable zoom mode
|
|
|
|
|
2011-02-24 03:53:56 +08:00
|
|
|
* Add support for STATIC_PLUGINS in r_lang
|
|
|
|
- r_lang_define is implemented in lang.c, but requires the collaboration
|
|
|
|
of the plugins to properly setup the environment for the script execution.
|
|
|
|
- Add support for STATIC_PLUGINS in r_lang
|
|
|
|
- dlerror(/usr/lib/radare2/lang_perl.so): libperl.so: cannot open shared object file: No such file or directory
|
|
|
|
This issue is fixed by setting LD_LIBRARY_PATH...looks like dlopen ignores rpath
|
2011-06-09 00:15:19 +08:00
|
|
|
* gdiff
|
2011-02-27 02:48:01 +08:00
|
|
|
- graph based fingerprints? (cyclomatic complexity...)
|
|
|
|
* rcore
|
|
|
|
- do not allow to disassemble unaligned addresses (toggle)
|
|
|
|
- r_asm can reduce cpu without disasm on fixed size ops archs.
|
|
|
|
* Add support for templates -- like in 010
|
|
|
|
http://www.sweetscape.com/010editor/templates.html
|
|
|
|
* templates #!template peheader.template
|
|
|
|
- pT template.foo # r_print_template
|
|
|
|
translate into c code and gets compiled. use rcc+rasm?
|
|
|
|
it is like a extended regular expression engine
|
2011-02-23 09:10:28 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
|
2010-11-18 04:15:34 +08:00
|
|
|
Debugger
|
2012-10-23 15:40:13 +08:00
|
|
|
--------
|
|
|
|
* Skip instruction
|
|
|
|
* Step until end of frame (stack pointer restored) (store sp, check if nsp>sp)
|
2010-11-18 04:15:34 +08:00
|
|
|
* stepover waits for one unknown event that cannot be stopped
|
2012-10-23 15:40:13 +08:00
|
|
|
* code injection facilities? (wtf? insert, execute, restore)
|
|
|
|
* Trace contents of buffers: filter search results..? cc 8080 @@ hit* .. check for values that has changed.
|
|
|
|
* Record trace of register status for each function when running
|
|
|
|
- r_reg_arena_copy();
|
2010-11-18 04:15:34 +08:00
|
|
|
* Implement list threads on ALL supported platforms (win,lin,osx)
|
2011-02-12 19:54:26 +08:00
|
|
|
* All threads must be stopped when a breakpoint is handled..
|
2011-01-23 20:54:17 +08:00
|
|
|
* Add support for windbg+virtualkd
|
2010-11-18 04:15:34 +08:00
|
|
|
* Floating point registers
|
|
|
|
* MMX/XMM/DRX control
|
2011-02-25 11:19:30 +08:00
|
|
|
* Implement dump+restore as macros (dump,)
|
|
|
|
* Implement software stepping (with code analysis+breakpoints)
|
|
|
|
* Implement dbg.bep - in r_core? in r_debug after attach? maybe only in r2 binr?
|
|
|
|
- must be refined.. and look for better names
|
2010-11-18 04:15:34 +08:00
|
|
|
|
|
|
|
pancake
|
|
|
|
-------
|
2010-11-29 17:27:11 +08:00
|
|
|
* Implement PTRACE_BLOCK on Linux
|
2010-11-17 09:47:19 +08:00
|
|
|
* fork/clone child . inject code to create new threads or pids
|
2010-11-15 18:06:10 +08:00
|
|
|
* Functions in r_util to get lil/big ut8,16,32 from ut8*
|
2010-11-18 04:15:34 +08:00
|
|
|
- already done..must find better names probably
|
|
|
|
* Implement RAnalCall (analyze function arguments, return values, propagate types..)
|
|
|
|
- define number of arguments for given function
|
|
|
|
- warn if signature and analysis differs in number of args or so..
|
|
|
|
- when calling a function
|
|
|
|
- identify arguments passed and compare with arguments required
|
|
|
|
- if they do not match: we need to warn/ask user/store multiple options
|
|
|
|
- function signature comparsion if they dont match
|
|
|
|
r_anal_fcn_cmp (anal, f1, f2);
|
2010-10-19 02:47:13 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
Analysis
|
|
|
|
--------
|
|
|
|
* split r_anal API functions (too much args) _new, _add...
|
|
|
|
* Initial analysis looking for xrefs to strings and so? ax? ./a@@entry0 - Launched at startup
|
2012-02-01 23:53:46 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
To think
|
|
|
|
--------
|
|
|
|
* Ranged value:
|
|
|
|
- ut64 from, to
|
|
|
|
- restrict : %2 (module)
|
2012-02-01 23:53:46 +08:00
|
|
|
* Add support for aout binaries?
|
|
|
|
* eprintf should be modified to log into a file
|
|
|
|
- eprintf_open() -- start log to file
|
|
|
|
- eprintf_close() -- stop log to file
|
2011-01-23 20:54:17 +08:00
|
|
|
* Only use uppercase KMG for Kilo,Mega,Giga in r_num? - 'g' is for double
|
2010-11-18 04:15:34 +08:00
|
|
|
* radare2.c:217 . find name for maxfilesize to hash
|
|
|
|
* r_list_foreach_prev is buggy, review and remove..
|
2011-09-03 09:10:01 +08:00
|
|
|
* make symstall in r2-bindings/ ?
|
2010-11-18 04:15:34 +08:00
|
|
|
* Add deltified offset in PC? +10, +30 ... asm.reladdr
|
|
|
|
* regio not implemented // it is really necessary? imho no..
|
|
|
|
* distribute 'spp' with 'rarc2' ? imho no
|
2012-02-01 23:53:46 +08:00
|
|
|
* Add graph.nodecolor graph.bgcolor graph.edgecolor ??
|
2010-07-13 03:37:40 +08:00
|
|
|
|
2010-06-17 08:22:50 +08:00
|
|
|
Refactoring
|
2012-10-23 15:40:13 +08:00
|
|
|
-----------
|
2012-02-01 23:53:46 +08:00
|
|
|
* Rename r_hashtable -> r_ht
|
2010-09-24 22:45:56 +08:00
|
|
|
* Review the r_flags api
|
2010-10-18 05:03:54 +08:00
|
|
|
* Add pipe_to_buffer..not only file descriptors
|
2010-09-24 10:09:39 +08:00
|
|
|
* r_config set_int and so..simplify
|
2010-09-24 22:45:56 +08:00
|
|
|
- find/use more common cases for char* or &int maps
|
|
|
|
- automatic callbacks for most common usecases
|
2010-08-22 23:56:50 +08:00
|
|
|
* Merge r_socket inside r_util ?
|
2012-10-23 15:40:13 +08:00
|
|
|
* Is RCore->block and blocksize a RBuf ? refactor!11
|
2010-08-20 02:28:25 +08:00
|
|
|
* Discuss missing r_core_sysenv_update in core/file.c:33
|
2010-07-16 06:02:33 +08:00
|
|
|
* Add RLog API.. pipeable to disk and stderr..also hookable ..cool for ui (partially done)
|
2012-10-23 15:40:13 +08:00
|
|
|
* Redesign core/disasm.c to provide a pluggable api
|
2010-06-18 23:52:30 +08:00
|
|
|
* Move 'r_syscall_t' stuff into r_debug (sync r_core)
|
2010-06-21 17:55:48 +08:00
|
|
|
* Implement r_bind api to link multiple pointers
|
|
|
|
core->asm = r_bind_set (core->asm->bind, r_asm_new ());
|
2010-06-18 23:52:30 +08:00
|
|
|
* Find a better name for r_buf_fread (really?)
|
2010-08-16 23:48:47 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
To wipe
|
|
|
|
-------
|
2012-02-01 23:53:46 +08:00
|
|
|
- Move manpages from man/ to binr/*/? (harder to maintain?)
|
|
|
|
- Move the content of libr/*/TODO here
|
|
|
|
- linestyle?? for disassembly lines
|
|
|
|
- remove libr/vm and libr/db
|
|
|
|
- imho we should not implement this:
|
|
|
|
- Implement BLOCK in r_core_sysenv_begin|end ()
|
2012-10-23 15:40:13 +08:00
|
|
|
* Deprecate CiU (remove) those APIs and dependencies!
|
|
|
|
- big-ssl.c big-gmp.c ...
|
|
|
|
- implement GMP in util/big.c
|
|
|
|
- http://etutorials.org/Programming/secure+programming/Chapter+7.+Public+Key+Cryptography/7.5+Generating+a+Prime+Number+Testing+for+Primality/
|
2012-02-01 23:53:46 +08:00
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
Optimizations
|
|
|
|
-------------
|
2012-02-01 23:53:46 +08:00
|
|
|
* Performance
|
|
|
|
- cons_visual_write() should do a single write instead of one per line
|
|
|
|
- Refactor get_sym() and so on...
|
|
|
|
- TODO: make elf/pe get_os() and others return const and not strdup
|
|
|
|
- RAnalValue must be static, not ref
|
|
|
|
- save memory and accelerate code analysis
|
|
|
|
- basicblock signatures must be just pointers to a big buf
|
|
|
|
* Optimize /m
|
|
|
|
- search only using given file, not loading default library
|
|
|
|
- do not read each block byte per byte
|
|
|
|
- do not show repeated consecutive hits
|
2009-09-09 02:16:52 +08:00
|
|
|
|
2010-06-17 08:22:50 +08:00
|
|
|
Future
|
2012-10-23 15:40:13 +08:00
|
|
|
------
|
|
|
|
* memset0 the op before calling the plugin analysis -- not really that is a performance cost..
|
2012-02-01 23:53:46 +08:00
|
|
|
* Add 'S' subcommand to display section size and get by perms rwx
|
|
|
|
* Implement r_flag_unset_i () ftw
|
|
|
|
* Honor string metadata for asmsteps ('jk' in visual)
|
|
|
|
* search.kwidx must be search.lastidx or search.idx ?
|
|
|
|
* asm.pseudo for brainfuck
|
|
|
|
* code analysis for msil
|
|
|
|
* rax2 -k by default?
|
|
|
|
* r_cons_visual_write_tail() -> fill end of screen with spaces \o/
|
2011-11-25 07:22:44 +08:00
|
|
|
* Add support for 'expect' like foo in rarun2
|
|
|
|
- make rarun live in a lib.. or at least be usable from r2
|
2011-11-24 16:50:40 +08:00
|
|
|
* use centralized pubsub or memcached to sync data // redis?
|
2011-02-05 07:20:28 +08:00
|
|
|
* r_file_slurp should work fine for big files (not prio) r_file_slurp_buf?
|
|
|
|
- mmap if supported - add r_file_mmap ? - read file in blocks instead of the whole file in a single syscall
|
2010-10-18 05:03:54 +08:00
|
|
|
* Realign flags when using project in debug mode
|
|
|
|
* FileDescriptors: dd -- copy from !fd in r1
|
2011-01-23 20:54:17 +08:00
|
|
|
* metaflags? support to define relations between flags
|
2010-09-24 22:45:56 +08:00
|
|
|
(flag hirearchies)
|
|
|
|
r_flagtree
|
|
|
|
- r_flags should have a tree construction to access to them faster
|
|
|
|
- btree? following pointers like bigger,smaller
|
|
|
|
{ struct r_flag_t *bigger, *smaller; }
|
|
|
|
- hooks r_flag_add to recalculate in r_flag_optimize(), bigger/smaller pointers
|
|
|
|
- hooks r_flag_del to recalculate too.
|
|
|
|
- the r_flag_get by string should have another construction with btree
|
|
|
|
for the string of the name
|
|
|
|
|
2012-10-23 15:40:13 +08:00
|
|
|
<pre>
|
2010-06-29 02:30:20 +08:00
|
|
|
.------------------------.
|
|
|
|
| ___ ___ ____ |
|
|
|
|
| | - ) _ _ | _ |/ _/ | please!
|
|
|
|
| | - \| | |\_ |\_ \ |___. report! :)
|
2012-10-23 15:40:13 +08:00
|
|
|
| |___/\___/|___/|___/ ___/
|
2010-06-29 02:30:20 +08:00
|
|
|
| |
|
2012-10-23 15:40:13 +08:00
|
|
|
`------------------------`
|
|
|
|
</pre>
|