-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bad instruction #11
Comments
no that should absolutely not be the case and I have never seen that. can you please attach the original binary and the instrumented one? |
Also please add the dyninst version you are using (last github commit) |
what you are refering to is not code, that is why it does not decode to something useful. dyninst moves code around and makes space for its own magic. that is why the instrumented binary is much bigger and contains weird stuff :) have you tried running it? |
Yes, I tried. And this is one of the reason I looked at the disassembly code. afl-dyninst instrumented binary: .debug_info raw binary: ./../libdwarf-code/install/bin/dwarfdump ERROR: dwarf_srcfiles: DW_DLE_MDE (10) mangled debugging entry:libelf detected error. Attempting to continue. CU Name = COMPILE_UNIT :< 0><0x0000000b> DW_TAG_compile_unit DW_AT_producer <no string provided?> DW_AT_language DW_LANG_C89 DW_AT_name <no string provided?> DW_AT_comp_dir <no string provided?> DW_AT_low_pc 0xe2e2e2e2e2e2e2e2 DW_AT_high_pc 0xe2c58b162c58b162 (-2106124323376287390) DW_AT_stmt_list 0xe2e2e2e2 DW_AT_GNU_macros 0xe2e2e2e2 ./../libdwarf-code/install/bin/dwarfdump ERROR: dwarf_child: DW_DLE_ABBREV_MISSING(394) Unable to find abbrev for DIE CU Name = <no string provided?> |
OK this is something very different than what you first posted :) when you gdb the instrumented library with that input file - at which address location does that occur? can you please show the exact core dump reason, registers, address and call stack? |
I am looking for the problem. defaultModule may be changed by a binary which doesn't include "_init". for example: so I do following change: |
After instrument, the binary exists lots of bad instruction, Is this normal?
401dfd: 27 (bad)
401dfe: 00 be cd 0c 45 00 add %bh,0x450ccd(%rsi)
401e04: e8 37 fb ff ff callq 401940 freopen@plt
401e09: e9 1f f5 39 00 jmpq 7a132d <main_dyninst+0xeef>
401e0e: c9 leaveq
401e0f: 10 00 adc %al,(%rax)
401e11: 00 e9 add %ch,%cl
401e13: 27 (bad)
401e14: f6 39 idivb (%rcx)
401e16: 00 27 add %ah,(%rdi)
401e18: 00 e8 add %ch,%al
401e1a: 42 fc rex.X cld
401e1c: ff (bad)
401e1d: ff (bad)
401e1e: e9 2f f7 39 00 jmpq 7a1552 <main_dyninst+0x1114>
401e23: 27 (bad)
The text was updated successfully, but these errors were encountered: