anti-cracking library 1.0

Breakpoints detection functions
Probably every programmer knows what a breakpoint is. For those, who don't know what it is: breakpoint is a place, where debugger stops program execution. For details look at Delphi Help.
There are 3 common types of breakpoint: BPX, BPR and BPM.
BPX means BreakPoint on eXecution - debugger stops the program, when it is trying to execute instruction on a specific place in memory. BPR is breakpoint, which stops program execution, when it is trying to access memory on a specific location. At last but not least, BPM is a special type of breakpoint, which is supported and processed by CPU. It is stored in so-called Debug registers (Dr0, Dr1...Dr7), which are accessible only in RING0.
ACLib is able to detect all these types of breakpoints.
Why is it so important to detect them? If you want to crack an application, you NEED to set one or more breakpoints to get near to the keychecking algorithm. Very common way to get near to the algorithm is setting breakpoint on GetWindowText or hMemCpy API function. After clicking the Register button, application tryes to read content of EditBox containing the name and serial and Bang, the debugger pops up and stops application execution. The cracker found the keycheck...
Detection of a breakpoint on API function before you call it, is the best way to prevent these accidents.

Functions in this group: