DEF CON 23 - Chris Domas - Repsych: Psychological Warfare in Reverse Engineering
DEFCONConference4 HN recommenders · 2016–2026
173K views · talk · evergreen · Uploaded 2015-12-25
Chris Domas's DEF CON 23 talk on psychological warfare against reverse engineers. He builds code whose disassembly and control flow graphs mislead, intimidate and demoralize anyone analyzing it.
Recommended as an entertaining and well-explained talk on anti-reverse-engineering tricks.
51:32Behind the Scenes of iOS Security
Black Hat
12:01Why Electronic Voting Is Still A Bad Idea
Tom Scott
51:22USENIX Security '18-Q: Why Do Keynote Speakers Keep Suggesting That Improving Security Is Possible?
USENIX
42:50Defcon 18 Changing threats to privacy Moxie Marlinspike Part
killab66661
59:2328c3: The Science of Insecurity
28c3
49:47DEF CON 25 - John Sotos - Genetic Diseases to Guide Digital Hacks of the Human Genome
DEFCONConference
1:55:54Elevator Hacking: From the Pit to the Penthouse
DeviantOllam
25:41Compiling C to printable x86, to make an executable research paper
suckerpinch
7 comments from Hacker News
Saw this recently after reviewing some Defcon 23 videos. The author goes into detail about how it's working and some other fun stuff regarding anti-reverse-engineering. 2015 DEFCON 23 - Chris Domas - Repsych: Psychological Warfare in Reverse Engineering [VIDEO] And a paper by him: [LINK]
[VIDEO] about 7 minutes in he is chatting about it but all is a good watch - could only find the YT link sorry
tangentially, the "blueprint spaghetti" link is pretty great: [LINK] at a former job i knew a team of devs who built and maintained a framework to help teams of researchers put together pipelines of simulation (often fluid simulation), animation, rendering, etc. This framework had its own blueprinting functionality. One of the cute features they had was nested blueprints -- e.g. you could define some blueprint, and abstract it behind an interface as its own component, then re-use the component in another blueprint. So i guess in a "blueprints from hell" scenario that lets you have "fractal blueprints from hell". edit: i'm also reminded of Chris Domas' defcon talk "Psychological Warfare in Reverse Engineering", where he sets out to construct binaries that cause despair when someone tries to reverse engineer them -- in particular he asks the question: "could i make a binary that draws a particular picture when someone views the binary's control flow graph in IDA" [VIDEO]
In nature, prey animals will sometimes jump when they spot a predator[1]. One of the explanations is that this is the animal communicating to the predator that it is a healthy prey animal that would be hard to catch and therefore the predator should choose to chase someone else. I think we can kind of view obscurity in the same way. It's a way to signal to a predator that we're a hard target and that they should give up. Of course in the age of automation, relying on obscurity alone is foolish because once someone has automated an attack that defeats the obscurity, then it is little or no effort for an attacker to bypass it. Of course, sprinkling a little bit of obscurity on top of a good security solution might provide an incentive for attackers to go someplace else. And I can't help but think of the guy who was trying to think of ways to perform psychological attacks against reverse engineerers [2]. [1] - [LINK] [2] - [VIDEO]
Makes me think of what might deter a reverse engineer and then this most awesome youtube talk on psychological warfare by Chris Domas [VIDEO] It's so good.
You can visualize the actual execution of software at a very low level using the "graph views" built into "binary code analysis tools" (decompilers/disassemblers) like IDA Pro, Ghidra, and Radare2. Many of these tools can generate absolutely HUGE graphs showing the control flow of raw assembly, though they're frequently so large that they're more overwhelming than helpful. Hence why most of the time they are used to generate graphs of small and complex sub-sections of software. Here are some example images showing control-flow graphs by different disassemblers/binary code analysis tools: [0] Ghidra control flow graph, relatively zoomed in: [LINK] Taken from this stackoverflow: [LINK] [1] Radare2 showing control flow graphs in ascii in the terminal: [LINK] [2] IDA Pro control flow graph, relatively large and zoomed out: [LINK] From this stackexchange: [LINK] [3] Defcon talk by Chris Domas where they demonstrated automate code generation which would cause various binary code analysis tools to generate control-flow graphs which formed specific shapes, shapes meant to offend or demoralize researchers examining the code (quite entertaining): [VIDEO]
I cannot wait for the accompanying Black Hat talk. Christopher Domas is one of my absolute favorite all-time hackers. He does such a fantastic job of explaining his work. Some of my favorite talks of his: - Psychological Warfare in Reverse Engineering [VIDEO] - The MoVfuscator [LINK] - Hardware Backdoors in redacted x86 [LINK]