Go Back   Exetools > General > General Discussion


Thread Tools Display Modes
Old 01-06-2021, 01:14
Conquest Conquest is offline
Join Date: Jan 2013
Location: 0x484F4D45
Posts: 115
Rept. Given: 46
Rept. Rcvd 29 Times in 17 Posts
Thanks Given: 26
Thanks Rcvd at 51 Times in 25 Posts
Conquest Reputation: 29
Ollydbg Ollydbg.lib

Is there any source for this or any recent version? Last I have seen is from the era of VS6
Reply With Quote
Old 01-06-2021, 05:10
atom0s's Avatar
atom0s atom0s is offline
Join Date: Jan 2015
Posts: 325
Rept. Given: 25
Rept. Rcvd 107 Times in 52 Posts
Thanks Given: 49
Thanks Rcvd at 551 Times in 220 Posts
atom0s Reputation: 100-199 atom0s Reputation: 100-199
OllyDbg's PDK is available on its homepage:
(OllyDbg 1.x) http://ollydbg.de/plug110.zip
(OllyDbg 2.x) http://ollydbg.de/plug201h.zip

The modded PDK is also available here: (1.x)

With the note from the author that modded it:

Modified PDK from Alex Clarke. He wrote:


Firstly congratulations and thanks for OllyDbg - it's incredibly good. I've been playing with the SDK using C++ for a plugin. I've made a few modifications that make the SDK header work better when using it in C++ code in (at least) a couple of newer C++ compilers (namely Borland C++ builder v1 and Visual Studio.net). They also remove various errors/warnings and the need for unsigned characters (when compiling .cpp's) or forcing byte packing (any source file). Finally I've got intellisense working with the SDK (the code hints in VisC).

Here's how the edits work:

Firstly, forcing compilation with 'chars unsigned as default' (when used from a .cpp file) is not as much of a problem when using the SDK from genuine C++ (i.e. when compiling a file with a .cpp extension). The ANSI standard prohibits implicit casting between signed char *, unsigned char * and char *. Since you've explicitly declared all the necessarily unsigned char params/returns, Visual C++.net causes an error if this is attempted regardless of the compiler switch setting. Borland C++ builder (v1 - using the older ANSI rules) warns about mixing types, but I'm pretty sure later versions will kick them out. I appreciate that there is a problem with sign extension when using the implied conversions, but this doesn't appear as if it will be a problem in your API.

You don't need to compile with 'byte packing' anymore (when using plugin.h from either a .c or .cpp) - pushing/popping the packing for definitions for the necessary structures and 'envelopes' should be sufficient (the bookmark plugin is fine from both compilers).

I've noticed that you return an enum in the Getstatus API. I've had a number of problems with sending enums out of C++Builder, the reason being that they are treated as bytes rather than longs if only small values are defined for the type. I don't think that returning them will be any problem, but you may get problems with builder if they are passed into the routines. As a cautionary measure I have added the #pragmas to declare your enums as longs (i'm guessing borland C++ compiler supports this but don't know for sure). It should allow safe enumeration of several of the sets of defines if desired.

Intellisense didn't work. This is because it makes globally declared type info available, but not global function prototypes unless they are in a namespace or the code body is declared in the project somewhere. I've put a namepace 'ODBG' around (just) the function declarations, and a 'using namespace ODBG' command to make it behave exactly as before when the functions are not called in the global scope, but if you stick ODBG:: in front of a function call you'll get a hint. Also I've tidied up the extern "C"'s (should make older versions of intelisense / newer versions of builder give more readable hints).

Afterthought: Thrown in a header #ifdef block to stop cyclic includes too.

Find attached the modified header, the import lib produced for builder and the def file/import lib for vc7. The libs may work in different versions of the respective compilers. VS.net didn't like the VC50 one, but builder seemed to be fine with the borland one (sending mine for the sake of completion).

Hope that's useful.


Alex Clarke
Personal Projects Site: https://atom0s.com

Last edited by atom0s; 01-06-2021 at 05:16.
Reply With Quote
The Following 3 Users Say Thank You to atom0s For This Useful Post:
Conquest (01-06-2021), quygia128 (01-06-2021), tonyweb (01-06-2021)
Old 01-06-2021, 16:02
Conquest Conquest is offline
Join Date: Jan 2013
Location: 0x484F4D45
Posts: 115
Rept. Given: 46
Rept. Rcvd 29 Times in 17 Posts
Thanks Given: 26
Thanks Rcvd at 51 Times in 25 Posts
Conquest Reputation: 29
Works like a charm in both v142 and v141_winxp toolchain. Is there any source for these libraries around?
Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

All times are GMT +8. The time now is 04:52.

Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX
( 1998 - 2021 )