it doesnt seem that difficult in concept, just a little complex to work out all the bugs, but they're apple, they can do a lot of testing
-
-
Replying to @senkowo
It's... Not that complicated given the other considerations you have to deal with anyway, like x86 binaries not having unambiguous parses
1 reply 0 retweets 5 likes -
-
Replying to @senkowo
so if you want some real fun... call rand test eax, 1 jz 1f+1 1: add ax, ax If rand returns an odd value, that executes "add ax, ax". If it returns an even value, it skips the first byte of the instruction, which will be 66h (operand size prefix), so it becomes "add eax, eax"
2 replies 0 retweets 11 likes -
Replying to @erincandescent @senkowo
That's ... horrid. Or clever. Or something. Self-modifying code that doesn't actually modify anything.
2 replies 0 retweets 0 likes -
Not self modifying, just jumping in the middle of an instruction
1 reply 0 retweets 2 likes -
Utterly ancient anti-reversing technique too. You don't trust x86 disassembly unless you have evidence of it starting on an instruction boundary that actually gets jumped to.
1 reply 0 retweets 2 likes -
Replying to @marcan42 @erincandescent and
this should be significantly easier to handle than a JIT by using the "superset disassembly" brute-force trick? JITing a JIT seems like it'd much trickier because it tends to touch the "cache invalidation" hard CS problem
1 reply 0 retweets 0 likes -
Replying to @rqou_ @erincandescent and
You just make sure anything you've JITed gets mapped read-only, so any writes fault and let you invalidate the JIT.
1 reply 0 retweets 0 likes -
Replying to @marcan42 @erincandescent and
Hmm, feels like that would have really terrible performance having to take so many faults and round-trips through the kernel?
1 reply 0 retweets 0 likes
You use heuristics to figure out what code is self-modifying and don't JIT it. You can't have it both ways, if you JIT code it better be static.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.