If I get this correctly, you need the Raw Public Key to recover the private key.
But it is not possible to get the Raw Public Key from a Bitcoin Address unless some transaction is done by whoever cracked the private key first, right?
Right!
which program you use to generate a large number of address and keys?
You have to use a library tailored to elliptic computations.
The most famous is the libsecp256k1 written by Pieter Wuille (it is in Bitcoin Core).
These programs
https://gist.github.com/jhoenicke/2e39b3c6c49b1d7b216b8626197e4b89 and
https://github.com/klynastor/supervanitygen use this library.
My code instead uses a different library written by myself for the LBC project.