VOGONS


DOSBox debugger

Topic actions

Reply 161 of 176, by videogamer555

User metadata
Rank Member
Rank
Member

I just downloaded dosbox-74-3-debug.exe and it says it's missing SDL DLLs. It seems the normal version of DOSBox was compiled with static SDL libraries, but the debug version of DOSBox is compiled only with import libraries mode, expecting external DLLs to be supplied separately. Also it's expecting DLLs with the names SDL.dll and SDL_net.dll but those can't be downloaded from the official SDL website or github. Only the DLLs called SDL2.dll and SDL2_net.dll are available there. It seems that SDL.dll (and releated files) must be from SDL 1.x while the currently available DLLs are based on SDL 2.x and are therefore not the same DLL files. Also the DLL files can't just be renamed. I'm not sure about the equivalent in Linux (.SO files) but Windows DLLs can't just be renamed. Windows DLLs have an internal name that usually must match the filename for them to work correctly. And that's been the case here. I can't download the current SDL DLLs and have them work in DOSBox. I'll need to find an archive of old SDL DLLs somewhere, unless somebody here can post them for me to download. Without those, I won't be able to use dosbox-74-3-debug.exe

Reply 163 of 176, by doshea

User metadata
Rank Member
Rank
Member
videogamer555 wrote on 2024-05-23, 21:02:

I'll need to find an archive of old SDL DLLs somewhere, unless somebody here can post them for me to download. Without those, I won't be able to use dosbox-74-3-debug.exe

I did Google searches for "sdl" and "sdl_net" and these links were on the first screen of results:

https://www.libsdl.org/release/
https://www.libsdl.org/projects/SDL_net/release/

https://www.libsdl.org/release/SDL-1.2.15-win32.zip contains an "SDL.dll" and I suspect some download from the second link will give you the SDL_net.dll you need.

Reply 165 of 176, by videogamer555

User metadata
Rank Member
Rank
Member
jmarsh wrote on 2024-05-23, 22:14:

Regular DOSBox builds do not use static SDL libraries.

Ok. Sorry. I thought it was statically linked in the normal version because I didn't remember seeing the DLLs there, but upon looking at it again, I see it does have the DLLs there.

Reply 166 of 176, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

is there a way to find a code that accesses string, it should be something like "push ########" right? in ollydbg its very easy , how to in dosbox debugger?

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 167 of 176, by jal

User metadata
Rank Oldbie
Rank
Oldbie

No, "push" is putting something on the stack, it has nothing to do with string manipulation. In fact, a string is just a contigious memory area where bytes are stored, so there's nothing in assembly to recognize a certain memory area is used to store a string. Ollydbg has a dynamic analyzer, that recognizes (or rather, makes an educated guess) about what certain memory areas contain, based on common patterns. It is more like a reverse engineering tool than just a debugger. The DOSbox debugger is just that, a debugger. It has none of the advanced features of Ollydbg.

Reply 168 of 176, by doshea

User metadata
Rank Member
Rank
Member
RaVeN-05 wrote on 2024-10-10, 11:49:

is there a way to find a code that accesses string, it should be something like "push ########" right? in ollydbg its very easy , how to in dosbox debugger?

If the access you're interested in is modifying (not just reading) the string, and you know where it's located, you could use one of these commands:

Fizzban wrote on 2004-01-22, 03:31:

[*]BPM [seg]:[offset] sets a breakpoint that activates whenever the content of the given memory location changes. Attention: The new breakpoint will assume that the given location currently has the value 0x00. So you may get a "memory has changed from 00 to ??" breakpoint message as soon as you continue the execution although the memory actually didn't change.
[*]BPPM [selector]:[offset] is like BPM but with protected-mode-memory
[*]BPLM [linear address] like BPM but with a linear address location

From a quick skim, I didn't see a "break on read" function, but there might be one there.

Reply 172 of 176, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

I know exact string, and I want to find piece of code which references to it, it can be mov to register an address or pushes this address to stack

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 173 of 176, by aqrit

User metadata
Rank Member
Rank
Member

Again...

1. Run the Dosbox Debugger under another debugger (i.e. OllyDbg).
2. Use a memory scanner (i.e. Cheat Engiine) to find the "host" address of the string in memory.
3. Set a hardware breakpoint on the memory address of the string in the host debugger (i.e. OllyDbg).

Now... when the hardware breakpoint trips:
4. Signal the Dosbox Debugger to break.****
5. Resume execution in the host debugger (i.e OllyDbg).

The Dosbox Debugger should now be one instruction beyond whatever instruction accessed that memory location.

***
The trick is telling the dosbox debugger to break from the host debugger.
I just added a volatile boolean that I could set in the `DEBUG_HeavyIsBreakpoint()` function.
The address of the boolean was found automatically by loading the dosbox debug symbols file in the host debugger.

Reply 174 of 176, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

not working (

"4. Signal the Dosbox Debugger to break.****" fails

when i downloaded debug version, only exe downloaded i dont have pdb symbols file.

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 176 of 176, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

oh my god, can you please share for me that version, or PM, its painful for me to compile something which is not my own. sorry (

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv