InfoSec Person | Alt-Account#2

  • 0 Posts
  • 5 Comments
Joined 1Y ago
cake
Cake day: Sep 28, 2023

help-circle
rss

The debug version you compile doesn’t affect the code; it just stores more information about symbols. The whole shtick about the debugger replacing instructions with INT3 still happens.

You can validate that the code isn’t affected yourself by running objdump on two binaries, one compiled with debug symbols and one without. Otherwise if you’re lazy (like me 😄):

https://stackoverflow.com/a/8676610

And for completeness: https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Debugging-Options.html


Excellent question!

Before replacing the instruction with INT 3, the debugger keeps a note of what instruction was at that point in the code. When the CPU encounters INT 3, it hands control to the debugger.

When the debugging operations are done, the debugger replaces the INT 3 with the original instruction and makes the instruction pointer go back one step, thereby ensuring that the original instruction is executed.


https://en.wikipedia.org/wiki/INT_(x86_instruction) (scroll down to INT3)

https://stackoverflow.com/a/61946177

The TL;DR is that it’s used by debuggers to set a breakpoint in code.

For example, if you’re familiar with gdb, one of the simplest ways to make code stop executing at a particular point in the code is to add a breakpoint there.

Gdb replaces the instruction at the breakpoint with 0xCC, which happens to be the opcode for INT 3 — generate interrupt 3. When the CPU encounters the instruction, it generates interrupt 3, following which the kernel’s interrupt handler sends a signal (SIGTRAP) to the debugger. Thus, the debugger will know it’s meant to start a debugging loop there.


Surprised no one’s mentioned HTTP Cats yet:

https://http.cat/

Personally, HTTP 405 (Method not allowed) is my favorite:

An image of former US president George Bush eating a cat. The text below the image reads, "405. Method Not Allowed"


Will you (the community) be setting your username to your public username (a username you use everywhere) or something that’s different from your public username?

Idk why, but signal feels more… personal(?) and I’d hate for general people to stumble across my signal account just by guessing whether my signal username is my public username.

I’d be fine if they got my Discord account, mastodon account, Lemmy account (they’re all different usernames anyway) because they’re public-ish accounts. Signal feels less public and I’d want to go with a username that only I can send to people I know.

It looks like there will be a message requests area and it looks like usernames can also be changed (should a username ever be doxxed).

I’m still on the fence.