Mac installation Drozer apk security testing framework stepping on the pit record, 'openssl/opensslv.h' file not found and implicit declaration of function'xx'

1. Environment preparation

Check the Drozer project description and find that the environmental requirements
insert image description hereare roughly:

  1. jdk1.7+
  2. python2.7 and pip 2 do not support python3 and pip3
  3. Protobuf 2.6 +
  4. Pyopenssl 16.2 +
  5. Twisted 10.2 +
  6. android sdk
  7. install adb
  8. The simulator also needs to install the drozer agent
  9. Make sure to configure adb, java environment variables

1.1 mac install python2 through brew

Starting from MacOS 12.4 Beta (21F5048e), it is possible to pyenvinstall python2 in intel and Apple chips by

For example, install python2 of version 2.7.18 in M1.

brew install pyenv
pyenv install 2.7.18
export PATH="$(pyenv root)/shims:${
     
     PATH}"
pyenv global 2.7.18
python --version

If all goes well, you will be able to see Python 2.7.18the output.

The above path needs to be added to the environment variable, for example:

echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc

1.2. Install pyOpenSSL

Installation pyOpenSSLis the worst step, there is no one, the following error pip install -v pyOpenSSL==0.14occurs

 clang -fno-strict-aliasing -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/liam/.pyenv/versions/2.7.18/include/python2.7 -c build/temp.macosx-12.6-arm64-2.7/_openssl.c -o build/temp.macosx-12.6-arm64-2.7/build/temp.macosx-12.6-arm64-2.7/_openssl.o -Wconversion -Wno-error=sign-conversion
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:575:10: fatal error: 'openssl/opensslv.h' file not found
  #include <openssl/opensslv.h>
           ^~~~~~~~~~~~~~~~~~~~
  1 error generated.
  
      =============================DEBUG ASSISTANCE=============================
      If you are seeing a compilation error please try the following steps to
      successfully install cryptography:
      1) Upgrade to the latest pip and try again. This will fix errors for most
         users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
      2) Read https://cryptography.io/en/latest/installation.html for specific
         instructions for your platform.
      3) Check our frequently asked questions for more information:
         https://cryptography.io/en/latest/faq.html
      =============================DEBUG ASSISTANCE=============================
  
  error: command 'clang' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

Go to https://github.com/WithSecureLabs/drozer/issues/155 to find similar problems, the required pyOpenSSLversion is greater than 0.15that, but ah, 0.15the same problem still occurs in the installed version

insert image description here

In fact, after careful analysis of the log, we can find that the problem probably occurred in the reference cryptographyof the encryption and decryption module. I continued to find a problem that cannot be said to be irrelevant but exactly the same through the search engine Dafa.openssl
cryptography

‘openssl/opensslv.h’ file not found ; OSX 10.11.6 #3367

insert image description here
cryptographyFinally, the official installation documentation found by this question https://cryptography.io/en/latest/installation/

insert image description here


1.3. Install openssl and rust toolchain

The official installation document passed cryptographycan actually solve most of the problems. It turned out to be the required openssl 3version
. Execute the following commands to install opensslandrust

brew install openssl@3 rust

But ah but, it's a clang that doesn't talk about martial arts, come on, cheat! Come on, sneak attack! My 69-year-old comrade
continues to execute the following commands

env LDFLAGS="-L$(brew --prefix openssl@3)/lib" CFLAGS="-I$(brew --prefix openssl@3)/include" pip install cryptography

It directly broke a big defense, and directly pretended to be dead after reporting an implicitly declared error, and walked away very peacefully

build/temp.macosx-12.6-arm64-2.7/_openssl.c:18674:10: error: implicit declaration of function 'ERR_GET_FUNC' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    return ERR_GET_FUNC(x0);
           ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:18674:10: note: did you mean 'ERR_GET_LIB'?
  /opt/homebrew/opt/openssl@3/include/openssl/err.h:241:36: note: 'ERR_GET_LIB' declared here
  static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode)
                                     ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:18690:14: error: implicit declaration of function 'ERR_GET_FUNC' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    {
    
     result = ERR_GET_FUNC(x0); }
               ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:23389:10: error: implicit declaration of function 'FIPS_mode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    return FIPS_mode();
           ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:23400:14: error: implicit declaration of function 'FIPS_mode' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    {
    
     result = FIPS_mode(); }
               ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:23415:10: error: implicit declaration of function 'FIPS_mode_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    return FIPS_mode_set(x0);
           ^
  build/temp.macosx-12.6-arm64-2.7/_openssl.c:23431:14: error: implicit declaration of function 'FIPS_mode_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    {
    
     result = FIPS_mode_set(x0); }

I took a rough look at the reason, implicit declaration of function 'ERR_GET_FUNC' is invalid in C99
that is, the implicit declaration ERR_GET_FUNCof is invalid in C99

C language is a procedural programming language, and the program execution sequence is from top to bottom. Function calls need to be declared first and then called. C99 does not allow implicit declarations by default (the C language standard introduced in 1999).
In the previous version, if the C language function is not declared before calling, the compiler will automatically generate assembly code for the C code calling the function according to an implicit declaration rule.

Solution:

This part has nothing to do with the main question, you can skip it if you are not interested

Declare this function before calling the main function.
(1) Put it directly before the main function.
(2) Or define it in the .h header file and import the header file before the main function.
(3) Compile with an old version. 【Not recommended】

Use -std the parameter to specify the c language version:

  • If compiled with clang:

    # 使用 C89 <-- 不报错
    $ clang test.c -std=c89
    
    # 使用 C99 <-- 提示不允许隐式声明,报错
    $ clang test.c -std=c99
    
  • If compiled with gcc:

    # 使用 C89 <-- 不报错
    $ gcc test.c -std=c89  
    
    # 使用 C99 <-- 提示不允许隐式声明,报错
    $ gcc test.c -std=c99
    

1.4. Modify CFLAGS

The previous solution is actually useless, because I pipinstalled it through the method cryptography, so I continued to program for search engines and found a solution to a similar problem

CFLAGS=-Wno-error=implicit-function-declaration pip3 install scipy

insert image description here

So the layout is enlarged, thinking whether it can be plagiarized, oh no, it is imitation, imitation, the modified one is as CFLAGSfollows

env LDFLAGS="-L$(brew --prefix openssl@3)/lib" CFLAGS="-Wno-error=implicit-function-declaration -I$(brew --prefix openssl@3)/include" pip install cryptography

Execute pip list |grep cryptographyto view the installation package

pip list |grep cryptography

Package            Version
------------------ -----------
cryptography       3.3.2

1. 5. Install drozer

wget https://github.com/mwrlabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl
pip install drozer-2.4.4-py2-none-any.whl --ignore-installed pyOpenSSL

1.6. Preliminary summary of drozer installation commands

Note that there may be problems with this part of the command. If you encounter opensslversion problems, you can read the following chapters. I encountered problems [email protected]with andopenssl@3

# 安装python
brew install pyenv
pyenv install 2.7.18
export PATH="$(pyenv root)/shims:${
     
     PATH}"
pyenv global 2.7.18

#安装cryptography
brew install openssl@3 rust 
env LDFLAGS="-L$(brew --prefix openssl@3)/lib" CFLAGS="-Wno-error=implicit-function-declaration -I$(brew --prefix openssl@3)/include" pip install cryptography

#安装 protobuf Twisted和pyOpenSSL
pip install protobuf
pip install Twisted
pip install pyOpenSSL

# 安装drozer
wget https://github.com/mwrlabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl
pip install drozer-2.4.4-py2-none-any.whl --ignore-installed pyOpenSSL

2. Continue drozer's journey of stepping on the APK pit

When I dragged the drozer official website Agent .apkand sieve.apkinto the simulator to install, the following error occurred

The APK failed to install.
Error: INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113

insert image description here

After taking a look, the early Android system almost only supported the ARMv5 CPU architecture caused by the inconsistency of the mobile phone CPU architecture
, and later developed to support seven different CPU architectures: ARMv5, ARMv7 (from 2010), x86 (from 2011) ), MIPS (from 2012), ARMv8, MIPS64 and x86_64 (from 2014), each associated with a corresponding ABI.
Application Binary Interface (Application Binary Interface) defines how binary files (especially .so files) run on the corresponding system platform, from the instruction set used, memory alignment to available system function libraries. On the Android system, each CPU architecture corresponds to an ABI: armeabi, armeabi-v7a, x86, mips, arm64-v8a, mips64, x86_64.
But the latest Google official document has removed mips and armv5, as shown in the figure:

https://img-blog.csdnimg.cn/20201218133832693.png

2.1 Query the mobile phone cpu command line

Execute adb shell getprop ro.product.cpu.abiquery discovery is arm64-v8aschema

adb shell getprop ro.product.cpu.abi
arm64-v8a

Then decompress the drozer sieve.apkand look at the supported CPU architectures. Sure enough, I found Huadian, and lib/armeabi/I can find sieve.apkthe only supported armeabiarchitectures from

user@local 下载 % unzip sieve.apk 
Archive:  sieve.apk
  inflating: res/layout/activity_add_entry.xml  
  inflating: res/layout/activity_file_select.xml  
  inflating: res/layout/activity_main_login.xml  
  inflating: res/layout/activity_pin.xml  
  inflating: res/layout/activity_pwlist.xml  
  inflating: res/layout/activity_settings.xml  
  inflating: res/layout/activity_short_login.xml  
  inflating: res/layout/activity_welcome.xml  
  inflating: res/layout/format_pwlist.xml  
  inflating: res/menu/activity_add_entry_add.xml  
  inflating: res/menu/activity_add_entry_edit.xml  
  inflating: res/menu/activity_file_select.xml  
  inflating: res/menu/activity_main_login.xml  
  inflating: res/menu/activity_pin.xml  
  inflating: res/menu/activity_pwlist.xml  
  inflating: res/menu/activity_settings.xml  
  inflating: res/menu/activity_short_login.xml  
  inflating: res/menu/activity_welcome.xml  
  inflating: res/xml/prefrences.xml  
  inflating: AndroidManifest.xml     
 extracting: resources.arsc          
 extracting: res/drawable-hdpi/ic_launcher.png  
 extracting: res/drawable-ldpi/ic_launcher.png  
 extracting: res/drawable-mdpi/ic_launcher.png  
 extracting: res/drawable-xhdpi/ic_launcher.png  
  inflating: classes.dex             
  inflating: lib/armeabi/gdbserver   
  inflating: lib/armeabi/libencrypt.so  
  inflating: lib/armeabi/libdecrypt.so  
  inflating: META-INF/MANIFEST.MF    
  inflating: META-INF/CERT.SF        
  inflating: META-INF/CERT.RSA    

There are two solutions, one is to re-create the apk to add other architecture support, modifybuild.gradle

splits {
    
    
    abi {
    
    
        enable true
        reset()
        include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'arm64-v8a'
        universalApk false
    }
}

or:

defaultConfig {
    
    
   ndk {
    
    
         abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'arm64-v8a'
        }
}

But I can't compile it myself from the apk under the official website, and finally decided to create a 32-bit emulator in the next Android Studio to try. Note that the image needs to choose armeabi-v7athis architecture, because it armeabi-v7ais compatiblearmeabi

  1. Click Create Simulator More ActionsbelowVirtual Device Manager
    insert image description here
  2. Click Create deviceto select the mobile phone and clickNextinsert image description here
  3. Select the mirror image Other Imagesfound armeabi-v7aand click download to Nextproceed to the next step, and finally click Finishto complete the creationinsert image description here
  4. Finally, click the triangle symbol to start
    insert image description here5. Directly install the sieve.apk of drozer and an error will be reported
    The APK failed to install. Error:Could not parse error string.
    
    In this case, specify directly through the command abi, for exampleadb install --abi armeabi sieve.apk
    user@local 下载 % adb install --abi armeabi sieve.apk 
    Performing Push Install
    sieve.apk: 1 file pushed, 0 skipped. 1490.6 MB/s (367886 bytes in 0.000s)
            pkg: /data/local/tmp/sieve.apk
    
    drozer-agent-2.3.4.apkIt can also be installed in the same way
    user@local 下载 % adb install --abi armeabi drozer-agent-2.3.4.apk 
    Performing Push Install
    drozer-agent-2.3.4.apk: 1 file pushed, 0 skipped. 269.4 MB/s (633111 bytes in 0.002s)
            pkg: /data/local/tmp/drozer-agent-2.3.4.apk
    Success
    

2.2 Digression, x86 supports ARM architecture APP

Windows 11 will support the direct download and installation of Android applications in the Microsoft store without installing additional emulators. This time compatible with Android applications, Microsoft is cooperating with Intel and adopting a new technology called Intel. "Intel Bridge technology is Bridgea A runtime post-compiler that enables mobile applications to run as 'native applications' on x86-based devices.

To put it bluntly, this Bridge plays the role of "Android emulator" or "virtual machine", but because of the native operation, the efficiency will be higher. Moreover, the camera, network, sensor, etc. can directly call the local hardware to avoid lag or compatibility issues.

Intel Bridge has the same nature as Huawei's "Ark Compiler" and Apple's "Rosetta 2" for the M1 chip, but it is the opposite of the compilation direction of Rosetta 2, which is compiled from x86 to ARM architecture

Bridge did not fall from the sky, and many developers felt very familiar when they saw it. This reminds them of Intel Houdini technology, which is a key component in porting the Android operating system originally developed based on the ARM architecture to the x86 architecture.
What's more worth mentioning is that Houdini was independently developed by the Intel China team. From project initiation, concept verification, prototype to final productization, it is completed by Intel's R&D team in Shanghai.

Leading the development of the Houdini project is Dr. Li Jianhui, a principal engineer in the Intel Architecture, Graphics, and Software Group, responsible for leading deep learning framework integration and workload optimization.

2.3 openssl pitfalls

When I continued to execute drozer console connectand wanted to see the effect, there was no accident and another accident

/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/OpenSSL/crypto.py:14: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
  from cryptography import utils, x509
Traceback (most recent call last):
  File "/Users/user/.pyenv/versions/2.7.18/bin/drozer", line 30, in <module>
    __import__("drozer.cli.%s" % (sys.argv[1]))
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/cli/console.py", line 8, in <module>
    from drozer.console import Console
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/console/__init__.py", line 4, in <module>
    from drozer.console.console import Console
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/console/console.py", line 6, in <module>
    from pydiesel.api.transport.exceptions import ConnectionError
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/pydiesel/api/transport/__init__.py", line 5, in <module>
    from socket_transport import SocketTransport
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/pydiesel/api/transport/socket_transport.py", line 8, in <module>
    from drozer.ssl.provider import Provider # TODO: eugh
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/ssl/__init__.py", line 1, in <module>
    from drozer.ssl.ssl_manager import SSLManager
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/ssl/ssl_manager.py", line 6, in <module>
    from drozer.ssl.provider import Provider
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer/ssl/provider.py", line 2, in <module>
    import OpenSSL
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/OpenSSL/crypto.py", line 17, in <module>
    from OpenSSL._util import (
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 14, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: dlopen(/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/cryptography/hazmat/bindings/_openssl.so, 0x0002): symbol not found in flat namespace (_ERR_GET_FUNC)

In fact, it is generally opensslthe same problem. After consulting the boss, I gave a reply saying that I used it when compiling but OpenSSL 1.1.1used it when linking OpenSSL 3.0. After reading opensslthe version and error message, it is basically determined that it is a version problem. You can relink to OpenSSL 1.1.1and then Reinstall pyenvand cryptographyto resolve

user@user ~ % brew list |grep openssl
[email protected]
openssl@3

The solution is as follows:

#卸载pyenv
user@user ~ % pyenv uninstall 2.7.18
pyenv: remove /Users/user/.pyenv/versions/2.7.18? [y|N] y

#卸载openssl@3
user@user ~ % brew  uninstall openssl@3
Uninstalling /opt/homebrew/Cellar/openssl@3/3.0.5... (6,444 files, 27.9MB)

#强制链接到[email protected]
user@user ~ % brew link openssl --force [email protected]
Warning: Already linked: /opt/homebrew/Cellar/openssl@3/3.0.5
To relink, run:
  brew unlink openssl@3 && brew link --force openssl@3
Unlinking /opt/homebrew/Cellar/openssl@3/3.0.5... 5508 symlinks removed.
Linking /opt/homebrew/Cellar/[email protected]/1.1.1q... 3997 symlinks created.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc

#修改环境变量
user@user bin % echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
user@user bin % source  ~/.zshrc
user@user ~ % openssl version
OpenSSL 1.1.1q  5 Jul 2022

#重新安装pyenv
user@user ~ % pyenv install 2.7.18
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Downloading Python-2.7.18.tar.xz...

#安装cryptography
user@user ~ % env LDFLAGS="-L$(brew --prefix [email protected])/lib" CFLAGS="-I$(brew --prefix [email protected])/include" PKG_CONFIG_PATH="$(brew --prefix [email protected])/lib/pkgconfig" pip install cryptography

#验证cryptography
user@user ~ % python
Python 2.7.18 (default, Nov  7 2022, 09:51:47) 
[GCC Apple LLVM 14.0.0 (clang-1400.0.29.102)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cryptography.hazmat.bindings._openssl import ffi
__main__:1: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.     

2.4 Summary of the full version of the drozer installation command

Be careful not to upgrade pipthe version. pipAfter the upgrade, it may become pip3the corresponding path. You can pip --versionconfirm the version by

#安装rust工具链和openssl
brew install [email protected] rust 

#强制链接到[email protected]
brew link openssl --force [email protected]

#写入环境变量
echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
source  ~/.zshrc

# 安装python
brew install pyenv
pyenv install 2.7.18
export PATH="$(pyenv root)/shims:${
     
     PATH}"
pyenv global 2.7.18

#安装cryptography
env LDFLAGS="-L$(brew --prefix [email protected])/lib" CFLAGS="-I$(brew --prefix [email protected])/include" PKG_CONFIG_PATH="$(brew --prefix [email protected])/lib/pkgconfig" pip install drozer-2.4.4-py2-none-any.whl --ignore-installed pyOpenSSL

#安装 protobuf Twisted和pyOpenSSL
pip install protobuf
pip install Twisted
pip install pyOpenSSL

# 安装drozer
wget https://github.com/mwrlabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl
pip install drozer-2.4.4-py2-none-any.whl --ignore-installed pyOpenSSL

3. Use of drozer

3.1 Install agent.apk and sieve.apk to the emulator

Go to the official website https://labs.withsecure.com/tools/drozer to download Agent .apkandsieve.apk

Execute the following command on the computer to install apk and --abi armeabispecify the cpu architecture

adb install --abi armeabi sieve.apk
adb install --abi armeabi drozer-agent-2.3.4.apk 

3.2 Turn on forwarding on the computer

adb forward tcp:31415 tcp:31415

3.3 Start the Embedded Server on the mobile phone

drozer agentThe OFFapp clicked in the simulator and then click the button to openEmbedded Server
insert image description hereinsert image description here

3.4 start drozer console

Execute drozer console connectstart drozer console

user@user tmp %  drozer console connect
/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/OpenSSL/crypto.py:14: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
  from cryptography import utils, x509
Selecting 6fc8ab31aaf41650 (unknown sdk_phone_armv7 6.0)

            ..                    ..:.
           ..o..                  .r..
            ..a..  . ....... .  ..nd
              ro..idsnemesisand..pr
              .otectorandroidsneme.
           .,sisandprotectorandroids+.
         ..nemesisandprotectorandroidsn:.
        .emesisandprotectorandroidsnemes..
      ..isandp,..,rotectorandro,..,idsnem.
      .isisandp..rotectorandroid..snemisis.
      ,andprotectorandroidsnemisisandprotec.
     .torandroidsnemesisandprotectorandroid.
     .snemisisandprotectorandroidsnemesisan:
     .dprotectorandroidsnemesisandprotector.

drozer Console (v2.4.4)
dz>

3.5 drozer could not find or compile a required extension library.

Execution drozer console connect --debugcan display debug information
insert image description here
, you need to class_loader.pychange apk_pathit to your real ZipUtil.apkpath

For example:

    def __get_source(self, source_or_relative_path, relative_to=None):
        """
        Get source, either from an apk file or passed directly.
        """
        
        source = None

        if source_or_relative_path.endswith(".apk"):
           ...
            #apk_path = os.path.join(relative_to, *source_or_relative_path.split("/"))
            apk_path = "/Users/user/.pyenv/versions/2.7.18/lib/python2.7/site-packages/drozer-2.4.2-py2.7.egg/drozer/modules/common/ZipUtil.apk"
            java_path = apk_path.replace(".apk", ".java")
            
        ....
        return source

reference

  1. https://github.com/WithSecureLabs/drozer
  2. brew install python2
  3. https://github.com/WithSecureLabs/drozer/issues/155
  4. ‘openssl/opensslv.h’ file not found ; OSX 10.11.6 #3367
  5. https://cryptography.io/en/latest/installation/
  6. C compiler error: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration]
  7. https://github.com/scipy/scipy/issues/12935
  8. How to check whether the CPU type of an Android phone is armeabi, armeabi-v7a, or arm64-v8a
  9. [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
  10. You have to thank a Chinese engineer for installing Android on your computer
  11. How to install libhoudini on a custom Android x86 rig
  12. x86 emulator integrates Houdini
  13. Genymotion_ARM_Translation
  14. Android ABI
  15. “ssl module in Python is not available” when installing package with pip3
  16. drozer could not find or compile a required extension library.

Guess you like

Origin blog.csdn.net/qq_26545503/article/details/127650478