Change the way to search gadgets

 * when you cut different bytes to disassemble,
 * you would get different instructions and more gadgets.
 * Therefore, I change the way to search gadgets
 * by changing disassembly start address
 * which offsets one byte per loop,
 * Each loop would search gadgets from start address to MaxGadgetbyte.
Add function rop_chain_payload() to create payload
Add function rop_print_gadgets() to print all gadgets
Fix bugs - Parse large binary file causing crash

 * It didn't free the capstone object 'insn' inappropriately,
 * so it would cause out of memory.
 * Let it free and also check other malloc memory.
Merge pull request #5 from hwchen18546/feature

Search deeper for more gadgets
Use right-sibling tree to store gadgets
Add function to free the sibling tree
Add function to search gadget from tree
Save int80 gadget to tree
Add function to chain execve(/bin/sh) payload
Use call by pointer to pointer return rop chain
Modify the gadgets in exec() search
Bypass badbyte gadgets
Pasring arg [-p true|fasle]: print all gadgets
Pasring arg [-o offset]: Add padding bytes; Check odd argc error
Add struct Arg to save ropchain argv
Pasring arg [-b <badbyte>]: Bypass badbyte gadgets.
Merge pull request #7 from hwchen18546/tree

Use right-sibling tree to store gadgets
Merge pull request #8 from hwchen18546/chain

Automatic payload generator
Merge pull request #9 from hwchen18546/args

Parsing command-line arguments