- Fill RBinImport->size within bin plugins
  - Add field size to RBinImport
* r_bin_elf
  - Correct value of r_bin_elf_symbol_t->size for imports
* rabin2
  - Output af+ command in radare mode
* Update TODO
This commit is contained in:
Nibble 2010-08-01 11:02:55 +02:00
parent 2251f089fa
commit d094f42d2f
8 changed files with 15 additions and 6 deletions

4
TODO
View File

@ -24,7 +24,7 @@ TODO edu
TODO nibble
-----------
* rabin2 doesnt works for fat mach-o
* Fix PLT bounds detection
* Cx/CX are not displayed in disasm as they should.. (C! must die)
TODO pancake
@ -80,6 +80,8 @@ Questions:
- RAnalAopArg { int size; int delta; int type; }
- r_anal_aop_arg_set (); r_anal_aop_arg_get (); r_anal_aop_arg_binmask ();
* rasign2 : must be done, write manpage (isn't r2 enought?)
* rabin2 can now extract fat mach-o with rabin -x, is it worth native support for fat bins? nibble: NO pancake: ??
* Deprecate CF and use af+ instead?
Bindings
========

View File

@ -164,6 +164,9 @@ static int rabin_show_imports(ut64 at) {
} else {
if (rad) {
r_flag_name_filter (import->name);
if (import->size)
printf ("af+ 0x%08"PFMT64x" %"PFMT64d" fcn.imp.%s\n",
va?baddr+import->rva:import->offset, import->size, import->name);
printf ("fs imports\n");
printf ("f imp.%s @ 0x%08"PFMT64x"\n",
import->name, va?baddr+import->rva:import->offset);
@ -213,8 +216,8 @@ static int rabin_show_symbols(ut64 at) {
r_flag_name_filter (symbol->name);
if (!strncmp (symbol->type,"FUNC", 4)) {
if (symbol->size)
printf ("CF %"PFMT64d" @ 0x%08"PFMT64x"\n",
symbol->size, va?baddr+symbol->rva:symbol->offset);
printf ("af+ 0x%08"PFMT64x" %"PFMT64d" fcn.sym.%s\n",
va?baddr+symbol->rva:symbol->offset, symbol->size, symbol->name);
printf ("fs functions\n");
printf ("f fcn.sym.%s %"PFMT64d" 0x%08"PFMT64x"\n",
symbol->name, symbol->size,

View File

@ -623,7 +623,7 @@ struct r_bin_elf_symbol_t* Elf_(r_bin_elf_get_symbols)(struct Elf_(r_bin_elf_obj
toffset = sym[k].st_value;
else if ((toffset = Elf_(get_import_addr) (bin, k)) == -1)
toffset = 0;
tsize = 0;
tsize = 16;
} else if (type == R_BIN_ELF_SYMBOLS && sym[k].st_shndx != STN_UNDEF &&
ELF_ST_TYPE(sym[k].st_info) != STT_SECTION && ELF_ST_TYPE(sym[k].st_info) != STT_FILE) {
toffset = (ut64)sym[k].st_value +

View File

@ -127,6 +127,7 @@ static RList* imports(RBin *bin) {
strncpy (ptr->type, import[i].type, R_BIN_SIZEOF_STRINGS);
ptr->rva = import[i].offset;
ptr->offset = import[i].offset;
ptr->size = import[i].size;
ptr->ordinal = 0;
ptr->hint = 0;
r_list_append (ret, ptr);

View File

@ -116,6 +116,7 @@ static RList* imports(RBin *bin) {
strncpy (ptr->type, "FUNC", R_BIN_SIZEOF_STRINGS);
ptr->rva = imports[i].addr;
ptr->offset = imports[i].offset;
ptr->size = 0;
ptr->ordinal = 0;
ptr->hint = 0;
r_list_append (ret, ptr);

View File

@ -133,6 +133,7 @@ static RList* imports(RBin *bin) {
strncpy (ptr->type, "FUNC", R_BIN_SIZEOF_STRINGS);
ptr->rva = imports[i].rva;
ptr->offset = imports[i].offset;
ptr->size = 0;
ptr->ordinal = imports[i].ordinal;
ptr->hint = imports[i].hint;
r_list_append (ret, ptr);

View File

@ -1674,7 +1674,7 @@ static int cmd_anal(void *data, const char *input) {
size = r_num_math (core->num, r_str_word_get0 (ptr, 1));
addr = r_num_math (core->num, r_str_word_get0 (ptr, 0));
if (!r_anal_fcn_add (core->anal, addr, size, name, diff))
eprintf ("Cannot add function (duplicated or overlaped)\n");
eprintf ("Cannot add function (duplicated)\n");
}
free (ptr);
}
@ -2534,7 +2534,7 @@ static int cmd_meta(void *data, const char *input) {
case '!':
r_meta_sync (core->meta);
break;
case 'F': /* add function */
case 'F': /* add function */ /* XXX use af+ ? */
eprintf ("TODO\n");
break;
case 'S':

View File

@ -96,6 +96,7 @@ typedef struct r_bin_import_t {
char type[R_BIN_SIZEOF_STRINGS];
ut64 rva;
ut64 offset;
ut64 size;
ut64 ordinal;
ut64 hint;
} RBinImport;