2

Hopper offers a GDB/LLDB Debugger Server companion to the standard program. I'm unclear on what this should / can be used for. When I run the debugger server on the same machine that I'm using I see this:

enter image description here


There aren't really any options or built-in help. When I open Hopper.app's debugger panel I only see the program running locally. I was initially thinking that the Remote Debugger was maybe used to offload some of the processing to another computer, but I've also tried running Hopper Debugger Server on another mac on my LAN but I don't see it come up in the list, only my local machine:

enter image description here


As there are no settings to specify remote connection information, I think I need to do something remotely that would specify a the address of the machine running Hopper so that it can sort of 'dial in' and then show up on the list.

I haven't had any luck with the Hopper website, forum, FAQ.

What am I missing?

Can anyone give me a brief outline of how the GDB/LLDB remote debugger
is intended to be used (with Hopper) ?

6
  • Write a short program that crashes. You will see OSX'es own "Program terminated" dialog pop up, with the option to view the crash log and Send To Apple. What happens when when you have the debugger server running?
    – Jongware
    Jan 25, 2015 at 16:41
  • @Jongware - you're saying it should catch OS X crashes and allow debugging? Does it do anything else, i.e. what about the "GDB: not found" message?
    – cwd
    Jan 25, 2015 at 16:49
  • Well it's only a guess. It seems to search for a debugger to start up when a crash happens.
    – Jongware
    Jan 25, 2015 at 16:52
  • On the same machine you don't need the debugger server anymore. There is a built-in debugger. Just for a remote machine. Jan 25, 2015 at 19:09
  • @HennoBrandsma - thanks, can you describe how to use it with a remote machine? Does the remote machine have to be a mac?
    – cwd
    Jan 26, 2015 at 0:38

1 Answer 1

5

I'm surprised nobody posted an answer, but here's what I eventually came to realize:

A lot of times disassembling is used for taking apart potential malicious apps like viruses, worms, or malware to understand how they affect a system. There is both static and dynamic disassembly. Static disassembly poses (little) threat to your system as it is only looking through the code - however dynamic disassembly is actually running the code ( with breakpoints, etc ) - which is something you probably don't want to do on your main computer if the code is potentially malicious.

Here's what IDA says in a tutorial about disassembling a "hostile" executable:

We could put a breakpoint there and let the program run. Now, before we do that, let's repeat that it is not a good idea to run untrusted code on your computer. It is much better to have a separate "sandbox" machine for such tests, for example using the remote debugging facilities IDA offers. Therefore, IDA displays a warning when a new file is going to be started under debugger: ignore at your own risk.

This finally made sense as an explanation for why you may want to use a remote debugger - seems so obvious now!

I'm still not exactly sure on how to setup and/or use Hopper's remote debugger but I'm sure I'll figure that out eventually.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.