tonygo

Joined 2 years ago

Karma
40
Submissions
21
Member since
Jul 18
senior systems engineer • macOS internals/security enthusiast • open source hacker
View on Hacker News

Recent submissions

Comment · 9 months ago
How does mercenary spyware actually control an iPhone? In this video, I reverse engineer the Predator spyware to uncover the secret internal protocol it uses to activate surveillance modules.

This is a summary of my technical research published on the Reverse Society blog. While analyzing the surveillance framework, I discovered a hidden custom text-based protocol that orchestrates the malware's operations (Camera, VoIP, etc.).

Comment · 2 years ago
I try to transform my C program into a long living one (just adding a sleep).

https://github.com/tony-go/antidebug-examples/pull/1

At first, it appears that the follow fork mode works nicely. But at some point it did not ... If I run it 10 times consequtively in LLDB. Sometimes it works, sometimes not ...

Comment · 2 years ago
I tried, but I was not able to determine so far...
Comment · 2 years ago
Thanks a lot :)

I think that I should dig more on ptrace! Maybe a next post?

Comment · 2 years ago
Hi :)

I am not really experienced with ARM haha :) So the way that I approached it was: - how could I remove the call of fork (because I don't want to fork) - how could I patch the register that should contains the result of the fork operation

I guess that it sounds like a naive approach haha

Feel free to propose an alternative I patch, I could update the post and credit you :)

Comment · 2 years ago
> You may still think that mode could be still able to catch a new child process but apparently people have tried and the answer is no

Not sure I got this. IIUC there is a link between the fact that we used dlsym and the fact the child process is not catched by lldb in the follow fork mode?

Comment · 2 years ago
Also it could come from a messy thing in the code.
Comment · 2 years ago
I tried with LLDB using `settings set target.process.follow-fork-mode child` but for some reasons I feel like it still exit from the parent process.

I also tried with a long living process: https://github.com/tony-go/antidebug-examples/tree/main/swif...

And I got this:

``` (lldb) run Process 14345 launched: '/anti-debug/swift/build/anti_debug' (arm64) start pid = 14345 exit parent process for child pid = 14348 continue as child process pid = 14348 Process 14345 exited with status = 0 (0x00000000) ```

The UI did not even appeared as it should.

Maybe I miss something in my LLDB config...

Comment · 2 years ago
> A far more effective actual anti-debugging technique is to have the parent become the debugger of the child,

Do you have example of that? I am really curious, thanks for sharing tho :)

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton