trying to symbolically solve, should be possible, angr as intransparent as ever problem is that the plt entries are not updated yet, which is why just using call_state fails its only a few functions, could do it by hand.. but to actually learn something i should try to automate it. basically want that angr can make it through the init process so the funcs are init. we can avoid a state blowup by skipping the input checks and encoding them into input constraints. then we just jump ahead after the checks have been performed (0x4020d0). to avoid another blowup, we use lazy evaluation. a hacky way to get simulation state output is to use sigalarm and reschedule in the handler. more standard way is logging.getLogger("..").setLevel(logging.DEBUG) if angr just fails and you know it should be possible - its probably more advanced crypto that you would not be able to reverse with symbolic execution anyways. z3 fails silently - love it! the binarydb is fucked, bad signature matching caused the md5 function to look like it was caused address sanitizer compile.. for future interest, the binary in the bndb is patched incorrectly! always google those constants quickly, before wasting time find out its md5, brute with hashcat after removing two candidates.. 5 min on gtx970