Problems compiling QuickBMS on Linux

Doubts, help and support about QuickBMS and other game research tools
einstein95
Posts: 64
Joined: Tue Sep 08, 2015 11:27 am

Problems compiling QuickBMS on Linux

Post by einstein95 »

Previously compiled fine, but now having problems recompiling possibly due to updating libssl from 1.0.0 to 1.1.

Linux version: 4.10.8-1-ARCH

Code: Select all

$ make
cc quickbms.c -m32 -s -O0 -fstack-protector-all -fno-unit-at-a-time -fno-omit-frame-pointer -w -o quickbms \
\
-D_7ZIP_ST \
\
[snip]
\
-lstdc++ -ldl -lcrypto -lssl -lz -lbz2 -lstdc++ -lm -lpthread -llzo2 -DDISABLE_UCL -DDISABLE_MCRYPT -DDISABLE_TOMCRYPT
In file included from quickbms.c:586:0:
perform.c: In function ‘do_quickbms_hmac’:
perform.c:925:31: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
     tmpctx = calloc(1, sizeof(EVP_MD_CTX));
                               ^~~~~~~~~~
perform.c: In function ‘perform_encryption’:
perform.c:976:24: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
             i = evp_ctx->encrypt;
                        ^~
In file included from quickbms.c:589:0:
cmd.c: In function ‘createRSA’:
cmd.c:4384:16: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
         rsa_key->n = BN_bin2bn(key,  keysz,  rsa_key->n);   // n
                ^~
cmd.c: In function ‘CMD_Encryption_func’:
cmd.c:5323:42: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
             evpmd_ctx = calloc(1, sizeof(EVP_MD_CTX));
                                          ^~~~~~~~~~
cmd.c:5328:41: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
             hmac_ctx = calloc(1, sizeof(HMAC_CTX));
                                         ^~~~~~~~
In file included from quickbms.c:589:0:
cmd.c:5374:36: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
         evp_ctx = calloc(1, sizeof(EVP_CIPHER_CTX));
                                    ^~~~~~~~~~~~~~
In file included from quickbms.c:589:0:
cmd.c:5392:38: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
         evpmd_ctx = calloc(1, sizeof(EVP_MD_CTX));
                                      ^~~~~~~~~~
cmd.c:5400:41: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
             hmac_ctx = calloc(1, sizeof(HMAC_CTX));
                                         ^~~~~~~~
make: *** [Makefile:25: all] Error 1


The commands used:

Code: Select all

wget http://aluigi.altervista.org/papers/quickbms_src.zip
7z x quickbms_src.zip
rm quickbms_src.zip
cd src/
make


EDIT: It appears so, there were a number of API changes: https://wiki.openssl.org/index.php/Open ... .0_Changes
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Problems compiling QuickBMS on Linux

Post by aluigi »

Yeah, I'm thinking about supporting both the new 1.1 and the old versions in the next quickbms.
evp is mandatory for quickbms so it's removing in 1.1 must be reimplemented in some way, if it's a painful process then I can't support 1.1