Debug SQLite with OllyICE 1.10
This lab uses a small SQLite program to learn native debugging and function identification. Work with your own sample binary and synthetic database rather than a third-party production process.
Compile a minimal program that opens a database, executes a known SQL statement, and closes the connection. Load it into OllyICE, start from the program entry point, and set breakpoints around imported or statically linked SQLite calls.
Observe the calling convention, stack arguments, register values, returned status code, and references to the SQL string. Step into the call only after documenting the call site so execution can be recovered reliably.
A recognizable instruction sequence is not a universal signature. SQLite release, compiler, optimization level, architecture, and link mode all change machine code. Validate candidates through behavior and call relationships rather than one fixed byte pattern.
Record module hashes, addresses as relative offsets, test input, and debugger actions. Keep the exercise isolated because breakpoints and memory changes can corrupt application state or database files.