3eed
Re:Show HN: A new way to learn languages
on Friday February 14, 2025 @01:58PM (#43051764)
This is incredibly helpful, kudos to everyone who worked on this.
Standardizing Automated Security Testing for IoT: Bluetooth LE
Reverse Engineering iMessage: Leveraging the Hardware to Protect the Software
Xpcspy: XPC message interception, serialization and filtering
Reverse Engineering Starling Bank (Part II): Jailbreak Detection and Mitigations
Reverse Engineering Starling Bank (Part I): Obfuscation Techniques
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @09:24AM (#23599887)
I came across Arybo while working on the binary but I can't remember why I didn't use it, this is vague memory now. Anyway it does the job in one go, I added an edit.
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @07:15AM (#23599019)
That guy gets it
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @07:11AM (#23599003)
It does check for a debugger. But that would be through sysctl, or the csops sys call, which would be trivial to patch and a single point of failure.
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @07:08AM (#23598982)
Are hardware breakpoints even possible on iOS?
And correct, you can't patch the binary because there many anti-tampering measures, you could probably bypass those, but that's going a different route.
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @07:04AM (#23598969)
DeviceCheck on iOS support iOS 11 and up. Which would cut off 7% of users[1], a bit extreme. But when the time comes when you don't have to cut off anyone, it'll be very interesting to see what'll happen on iOS. Someone will bypass it? Death of reverse engineering? Who knows. On Android, an HN user mentioned in the previous post that it's a solved problem[2].
[1]: https://developer.apple.com/support/app-store/ [2]: https://magiskmanager.com/
Re:Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfus...
on Monday June 22, 2020 @06:56AM (#23598937)
It's true, these posts are for intermediate and upper reverse engineers. It would really take a book to explain it from the ground up it like someone here mentioned. I suggest getting some background in assembly, then reading the OWASP guide (link in my previous HN post), and persistence.
Reverse Engineering Snapchat (Part II): Debofuscating the Undeobfuscatable
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @04:28PM (#23567614)
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @12:21PM (#23564623)
Security is a continuum, how much resource you can put into fending off prying eyes depends on how valuable your assets are and so how many prying eyes are targeting you. But as a start OLLVM is open source and not bad at all.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @12:18PM (#23564572)
Why not ;)
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @12:16PM (#23564543)
That'd be a noticeable performance hit I'd say.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @12:15PM (#23564535)
You could manage to isolate these functions. The problem is that it's much of a hassle to run the whole thing on an emulator because there are way too many real environment dependencies, and even if you go the hackery way and patch all those, you won't know if you're generating one with the correct parameters because you're treating the whole thing as a black box.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @10:47AM (#23563556)
You need some assembly background, then OWASP's guide[1], has all basics.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @10:17AM (#23563319)
"Evan Spiegel Hates this Trick!"
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @10:16AM (#23563315)
Couldn't agree more.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @08:56AM (#23562624)
Hmm, I wonder how deep one should look. Why don't you shoot me an email at hot3eed at gmail? I'd appreciate it a lot!
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @08:28AM (#23562419)
Sure! I'll consider doing this before the next post
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @08:27AM (#23562407)
Definitely not true.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @08:20AM (#23562352)
Not all of it, really ;)
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @08:01AM (#23562230)
All these are great programs, but none of them can understand that level of obfuscation so far. As stated in the post, both Ghidra and IDA interpret the very first block in any of the obfuscated functions, which ends with an indirect branch, as a complete function in and of its own. Because this is the usual case, indirect branches AKA tail calls terminate a function to start another, all with the same stack frame.
EDIT: also keep in mind the CFG isn't flattened here.
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Thursday June 18, 2020 @07:56AM (#23562202)
I'm gonna write about this in pt. 2. Basically you can use symbolic execution to recover the CFG[1] (using something like miasm), you can eliminate dead code, restore dynamic lib calls with an emulation, and whatever else. But the point is that it would take an incredible amount of work and co-operation between tools, and then you wouldn't have even begun understanding anything about the binary, which is a whole another story. Now there's a kind of a little shortcut to all of this, which when combined with a couple of tools, you'd be able to make sense of things in this binary, which I'm gonna reveal in my next post.
[1]: https://blog.quarkslab.com/deobfuscation-recovering-an-ollvm...
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Wednesday June 17, 2020 @10:33PM (#23559228)
That’s interesting to know
Re:Reverse Engineering Snapchat: Obfuscation Techniques
on Wednesday June 17, 2020 @09:49PM (#23558950)
The vast majority of these obfuscations (maybe except for the scratch arguments one) are done as LLVM passes, so it's done post-code writing, writing code like this would be unreadable and unmaintainable.