5 ms·
I can wrap my head around how memory works, but gdb just feels... hard to use. The commands are esoteric and hard to remember and the syntax can be arcane. Plug
by Alekhine 5y ago
I can wrap my head around how memory works, but gdb just feels... hard to use. The commands are esoteric and hard to remember and the syntax can be arcane. Plugins like pwndbg add color highlighting and other new features, but on the whole I wish the UX was better. I guess old GNU tools are always like that.
- veganjay 5y agoI used gdbpeda, which is similar to pwndbg. There is a learning curve. But if you like GDB, check out radare2. It's the GDB of disassemblers :)
- moises_silva 5y ago> I can wrap my head around how memory works, but gdb just feels... hard to use I really like it. I find it simple in the same way I find C a simple language. There isn't that many commands that you use frequently and the names are quite intuitive and can be shortened to a single letter if there are no conflicts. Now, on Windows, WinDbg I never really groked. I found it hard to use.
- majjgepolja 5y agoI would not call gdb or for that matter, most GNU tools, as 'simple'.
- RobRivera 5y agoi would ;)
- iudqnolq 5y agoI've forgotten who this was (someone in the Rust community?), but I recently heard someone describe GNU tools as simple to use and hard to learn. I'm still in the learning phase, but it makes sense to me.
- beardedwizard 5y agoAssembly itself is pretty simple, but hard to use.
- moises_silva 5y agoThat's a good point. However, it's arguably only hard to use to do modern software development which is a complex use case for a low level language. At least in all my time doing C (>10yrs) I can reduce most of my gdb usage to analyzing core dumps by doing a few simple things: print backtraces per thread, moving up/down the stack and printing variable values. The rare situations I've used it for 'stepping' through code, is also just a few commands. The code itself is where the complexity is at that point that gdb itself is the least of my concerns.
- zbaylin 5y agoI tend to find lldb a lot easier to use for the same reasons. There isnt a 1:1 mapping of gdb commands to lldb but the cheatsheet really helps and it doesn’t take that long to get a hang of it.
- ebeip90 5y agoPwndbg author here, glad that you like it! If you think there are any ways we can improve, please don't hesitate to create an Issue on Github for new features or bug fixes.
- Alekhine 5y agoHi! Great plugin, though I haven't explored it very much at all. I hope to do so over the next few weeks as I get started with the basics of binary exploits. Once I have some more experience I'll let you know. I think my issue is more with base GDB, not your project.
- salgernon 5y agoI don’t know if `pwndbg’ does this (or some other add-on maybe) but something I’ve haven’t seen since macsbug on a classic Mac: when stepping through a disassembly at a conditional branch, the PC line will state whether the branch will be taken and the target address. Saves all that tedious mucking about for the status register.
- ebeip90 5y agoNot only does it do this, it does all kinds of forward emulation, thanks to Unicorn. https://github.com/pwndbg/pwndbg/blob/dev/caps/disasm_taken_folded.png https://github.com/pwndbg/pwndbg/blob/dev/caps/disasm_taken_... This also works for stepping through e.g. ROP gadgets during exploitation.
- kart23 5y agouse a GUI if you aren't already. I hated using GDB, vscode has thoroughly changed that.
- secondcoming 5y agoThat's fine until you have to debug over ssh.
- daniel-levin 5y agoRecommend watching this. https://m.youtube.com/watch?v=PorfLSr3DDI https://m.youtube.com/watch?v=PorfLSr3DDI
- zlynx 5y agoOld tools stay around because they are good tools. See windbg also.