├── assets ├── cover.gif └── cover.png ├── .github ├── issue_label_bot.yaml ├── py_repo_tools │ ├── repo_config.json │ ├── shell_scripts │ │ └── github_downloader.sh │ ├── replace_repo_links.py │ ├── replace_security_policy_email.py │ ├── replace_code_of_conduct_info.py │ └── generate_index_file.py ├── CODEOWNERS ├── TO_DO.md ├── CHANGE_LOG.md ├── ISSUE_TEMPLATE │ ├── feature_request.yaml │ └── bug_report.yaml ├── CONTRIBUTING.md ├── config.yml ├── pull_request_template.md ├── SECURITY.md ├── workflows │ └── Repo-Generator.yaml ├── CODE_OF_CONDUCT.md └── settings.yml ├── LICENSE └── README.md /assets/cover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/user1342/Awesome-Android-Reverse-Engineering/HEAD/assets/cover.gif -------------------------------------------------------------------------------- /assets/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/user1342/Awesome-Android-Reverse-Engineering/HEAD/assets/cover.png -------------------------------------------------------------------------------- /.github/issue_label_bot.yaml: -------------------------------------------------------------------------------- 1 | label-alias: 2 | bug: 'Type: Bug' 3 | feature_request: 'Type: Feature' 4 | question: 'Type: Question' 5 | -------------------------------------------------------------------------------- /.github/py_repo_tools/repo_config.json: -------------------------------------------------------------------------------- 1 | {"Text_To_Replace": "MarketingPipeline/Awesome-Repo-Template", "Text_To_Replace_With": "YOUR_GITHUB_USERNAME/Your-Repo-Name", "EMAIL" : "test@example.com"} 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence, 3 | # @MarketingPip will be requested for 4 | # review when someone opens a pull request. 5 | # if you want to add more owners just write it after the demo user @OctoCat 6 | * @MarketingPip 7 | -------------------------------------------------------------------------------- /.github/TO_DO.md: -------------------------------------------------------------------------------- 1 | # To-Do 2 | 3 | ## Tasks (Sorted by Priority) 4 | 5 | 6 | #### High 7 | 8 | - [ ] Demo Task 9 | - [ ] Demo Task 10 | - [ ] Demo Task 11 | - [ ] Demo Sub-Task 12 | - [ ] Demo Sub-Task 13 | 14 | 15 | #### Medium 16 | 17 | - [ ] Demo Task 18 | - [ ] Demo Task 19 | - [ ] Demo Task 20 | - [ ] Demo Sub-Task 21 | - [ ] Demo Sub-Task 22 | 23 | #### Low 24 | 25 | - [ ] Demo Task 26 | - [ ] Demo Task 27 | - [ ] Demo Task 28 | - [ ] Demo Sub-Task 29 | - [ ] Demo Sub-Task 30 | -------------------------------------------------------------------------------- /.github/CHANGE_LOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## [Unreleased] 6 | 7 | 11 | 12 | Upcoming changes. 13 | 14 | ### Added 15 | 16 | ### Changed 17 | 18 | ### Removed 19 | 20 | ## [0.0.1] - YYYY-MM-DD 21 | 22 | Initial Release. 23 | 24 | ### Added 25 | 26 | - What was added. 27 | 28 | 29 | 33 | [Unreleased]: / 34 | [0.0.1]: /v0.0.1 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest an feature / idea for this project 3 | title: "[Feature Request / Suggestion]: " 4 | labels: ["enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | We appreciate your feedback on how to improve this project. Please be sure to include as much details & any resources if possible! 10 | - type: textarea 11 | id: Suggestion 12 | attributes: 13 | label: Suggestion / Feature Request 14 | description: Describe the feature(s) you would like to see added. 15 | placeholder: Tell us your suggestion 16 | value: "Your suggestion here" 17 | validations: 18 | required: true 19 | 20 | -------------------------------------------------------------------------------- /.github/py_repo_tools/shell_scripts/github_downloader.sh: -------------------------------------------------------------------------------- 1 | 2 | #!/bin/bash 3 | ##################################################### 4 | # Download Specific folders from Github using SVN 5 | # 6 | # Author: Declan Cook 7 | # Licence: MIT 8 | ##################################################### 9 | GHDOMAIN="https://github.com/" 10 | IN=$1 11 | IN=${IN##$GHDOMAIN} 12 | BRANCH="trunk" 13 | FOLDER="" 14 | IFS="/" read -a SECT <<< "$IN" 15 | 16 | if [[ "${SECT[3]}" != "master" ]]; then 17 | BRANCH=${SECT[3]} 18 | fi 19 | for index in "${!SECT[@]}"; do 20 | if [ $index -gt 3 ]; then 21 | FOLDER=$FOLDER/${SECT[index]} 22 | fi 23 | done 24 | 25 | # DOMAIN/USER/PROJECT//FOLDER 26 | echo Exporting $GHDOMAIN${SECT[0]}/${SECT[1]}/$BRANCH$FOLDER 27 | svn --force export $GHDOMAIN${SECT[0]}/${SECT[1]}/$BRANCH$FOLDER ./ 28 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | There are a lot of different ways to contribute to this project. See below for 4 | everything you can do and the processes to follow for each contribution method. 5 | Note that no matter how you contribute, your participation is governed by our 6 | [Code of Conduct](CODE_OF_CONDUCT.md). 7 | 8 | ## Make changes to the code or docs 9 | 10 | Fork the project, make a change, and send a pull request! 11 | 12 | Make sure you read and follow the instructions in the [pull request template](.github/pull_request_template.md). And note 13 | that all participation in this project (including code submissions) is 14 | governed by our [Code of Conduct](CODE_OF_CONDUCT.md). 15 | 16 | ## Submit bug reports or feature requests 17 | 18 | Just use the GitHub issue tracker to submit your bug reports and feature 19 | requests. 20 | -------------------------------------------------------------------------------- /.github/config.yml: -------------------------------------------------------------------------------- 1 | # Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome 2 | 3 | # Comment to be posted to on first time issues 4 | newIssueWelcomeComment: > 5 | Thanks for opening your first issue! Reports like these help improve the project! 6 | 7 | # Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome 8 | 9 | # Comment to be posted to on PRs from first time contributors in your repository 10 | newPRWelcomeComment: > 11 | Thanks for opening this pull request! 12 | 13 | # Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge 14 | 15 | # Comment to be posted to on pull requests merged by a first time user 16 | firstPRMergeComment: > 17 | Congrats on merging your first pull request! 18 | 19 | # The keyword to find for Todo Bot issue 20 | todo: 21 | keyword: '@todo' 22 | -------------------------------------------------------------------------------- /.github/py_repo_tools/replace_repo_links.py: -------------------------------------------------------------------------------- 1 | # Python program to read 2 | # json file 3 | 4 | 5 | import json 6 | 7 | # Opening JSON file 8 | f = open('.github/py_repo_tools/repo_config.json') 9 | 10 | # returns JSON object as 11 | # a dictionary 12 | config = json.load(f) 13 | 14 | 15 | # Define the filename here you want to replace content in 16 | FileName = "README.md" 17 | 18 | Text_To_Replace = config['Text_To_Replace'] 19 | 20 | Text_To_Replace_With = config['Text_To_Replace_With'] 21 | 22 | # Closing file 23 | f.close() 24 | 25 | 26 | # Open the File 27 | with open(FileName, 'r') as f: 28 | # Read the file contents 29 | contents = f.read() 30 | # Replace the file contents 31 | contents = contents.replace(Text_To_Replace, Text_To_Replace_With) 32 | 33 | # Write the file out 34 | with open(FileName, 'w') as f: 35 | # Write the updated contents 36 | f.write(contents) 37 | -------------------------------------------------------------------------------- /.github/py_repo_tools/replace_security_policy_email.py: -------------------------------------------------------------------------------- 1 | 2 | import json 3 | 4 | # Opening JSON file 5 | f = open('.github/py_repo_tools/repo_config.json') 6 | 7 | # returns JSON object as 8 | # a dictionary 9 | config = json.load(f) 10 | 11 | 12 | # Define the filename here you want to replace content in 13 | FileName = ".github/SECURITY.md" 14 | 15 | # Replace with string 16 | Text_To_Replace = "example@hello.com" 17 | 18 | # Replace with JSON value 19 | Text_To_Replace_With = config['EMAIL'] 20 | 21 | # Closing file 22 | f.close() 23 | 24 | 25 | # Open the File 26 | with open(FileName, 'r') as f: 27 | # Read the file contents 28 | contents = f.read() 29 | # Replace the file contents 30 | contents = contents.replace(Text_To_Replace, Text_To_Replace_With) 31 | 32 | # Write the file out 33 | with open(FileName, 'w') as f: 34 | # Write the updated contents 35 | f.write(contents) 36 | -------------------------------------------------------------------------------- /.github/py_repo_tools/replace_code_of_conduct_info.py: -------------------------------------------------------------------------------- 1 | 2 | import json 3 | 4 | # Opening JSON file 5 | f = open('.github/py_repo_tools/repo_config.json') 6 | 7 | # returns JSON object as 8 | # a dictionary 9 | config = json.load(f) 10 | 11 | 12 | # Define the filename here you want to replace content in 13 | FileName = ".github/CODE_OF_CONDUCT.md" 14 | 15 | # Replace with string 16 | Text_To_Replace = "example@hello.com" 17 | 18 | # Replace with JSON value 19 | Text_To_Replace_With = config['EMAIL'] 20 | 21 | # Closing file 22 | f.close() 23 | 24 | 25 | # Open the File 26 | with open(FileName, 'r') as f: 27 | # Read the file contents 28 | contents = f.read() 29 | # Replace the file contents 30 | contents = contents.replace(Text_To_Replace, Text_To_Replace_With) 31 | 32 | # Write the file out 33 | with open(FileName, 'w') as f: 34 | # Write the updated contents 35 | f.write(contents) 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 James Stevenson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Proposed changes 2 | 3 | Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. 4 | 5 | ## Types of changes 6 | 7 | What types of changes does your code introduce to this project? 8 | _Put an `x` in the boxes that apply_ 9 | 10 | - [ ] Bugfix (non-breaking change which fixes an issue) 11 | - [ ] New feature (non-breaking change which adds functionality) 12 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 13 | - [ ] Documentation Update (if none of the other choices apply) 14 | 15 | ## Checklist 16 | 17 | _Put an `x` in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code._ 18 | 19 | - [ ] I have read the CONTRIBUTING.md 20 | - [ ] I have added tests that prove my fix is effective or that my feature works 21 | - [ ] I have added necessary documentation (if appropriate) 22 | 23 | ## Further comments 24 | 25 | If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc... 26 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | | Version | Supported | 6 | | ------- | ------------------ | 7 | | 5.1.x | :white_check_mark: | 8 | | 5.0.x | :x: | 9 | | 4.0.x | :white_check_mark: | 10 | | < 4.0 | :x: | 11 | 12 | ## Reporting a Vulnerability 13 | 14 | If you have identified a security vulnerability in system or product please email `example@hello.com` with your findings. We strongly recommend using our `PGP key` to prevent this information from falling into the wrong hands. 15 | 16 | ### Disclosure Policy 17 | 18 | Upon receipt of a security report the following steps will be taken: 19 | 20 | - Acknowledge your report within 48 hours, and provide a further more detailed update within 48 hours. 21 | - Confirm the problem and determine the affected versions 22 | - Keep you informed of the progress towards resolving the problem and notify you when the vulnerability has been fixed. 23 | - Audit code to find any potential similar problems. 24 | - Prepare fixes for all releases still under maintenance. These fixes will be released as fast as possible. 25 | - Handle your report with strict confidentiality, and not pass on your personal details to third parties without your permission. 26 | 27 | Whilst the issue is under investigation 28 | 29 | - **Do** provide as much information as possible. 30 | - **Do not** exploit of the vulnerability or problem you have discovered. 31 | - **Do not** reveal the problem to others until it has been resolved. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | title: "[Bug]: " 4 | labels: ["bug", "triage"] 5 | assignees: 6 | - octocat 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to fill out this bug report! 12 | - type: input 13 | id: contact 14 | attributes: 15 | label: Contact Details 16 | description: How can we get in touch with you if we need more info? 17 | placeholder: ex. email@example.com 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: what-happened 22 | attributes: 23 | label: What happened? 24 | description: Describe the issue here. 25 | placeholder: Tell us what you see! 26 | value: "A bug happened!" 27 | validations: 28 | required: true 29 | - type: dropdown 30 | id: browsers 31 | attributes: 32 | label: What type of browser are you seeing the problem on? 33 | multiple: true 34 | options: 35 | - Firefox 36 | - Chrome 37 | - Safari 38 | - Microsoft Edge 39 | validations: 40 | required: true 41 | 42 | - type: dropdown 43 | id: operating-systems 44 | attributes: 45 | label: What type of Operating System are you seeing the problem on? 46 | multiple: true 47 | options: 48 | - Linux 49 | - Windows 50 | - Mac 51 | - Other 52 | validations: 53 | required: true 54 | 55 | 56 | - type: textarea 57 | id: logs 58 | attributes: 59 | label: Code to produce this issue. 60 | description: Please copy and paste any relevant code to re-produce this issue. And the version of the browser you are using. 61 | render: shell 62 | -------------------------------------------------------------------------------- /.github/py_repo_tools/generate_index_file.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | import sys 6 | import os 7 | import codecs 8 | import urllib.request, json 9 | 10 | 11 | 12 | 13 | 14 | API_URL = os.environ['INPUT_STORE'] 15 | 16 | 17 | with urllib.request.urlopen(f"{API_URL}") as url: 18 | data = json.loads(url.read().decode()) 19 | SiteDescription = data['description'] 20 | SiteTitle = data['name'] 21 | Author = data['owner']['login'] 22 | 23 | 24 | 25 | 26 | # README File Path 27 | input_file = "README.md" 28 | input_file_contents = None 29 | 30 | # Open our README file 31 | try: 32 | with open(input_file, 'r') as f: 33 | input_file_contents = f.read() 34 | 35 | except IOError: 36 | sys.exit('README.md file does not exist, or has no content. Exiting') 37 | 38 | 39 | output_file = "index.html" 40 | 41 | # Write out the Index.HTML file 42 | try: 43 | with codecs.open(output_file, 'w', encoding='utf-8') as f: 44 | f.write(f"""{SiteTitle} 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | """ + """ 68 | 69 | 70 | 71 | """ + 72 | 73 | input_file_contents + """ 74 | 75 | 76 | 77 | """) 78 | except IOError: 79 | sys.exit(u'Unable to write to file: {0}'.format(output_file)) 80 | -------------------------------------------------------------------------------- /.github/workflows/Repo-Generator.yaml: -------------------------------------------------------------------------------- 1 | name: Repo Generator 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | Replace_Links_In_Markdown: 7 | description: 'Update all links' 8 | type: boolean 9 | required: false 10 | Update_Code_Of_Conduct_EMAIL: 11 | description: 'Update Code Of Conduct Email' 12 | type: boolean 13 | required: false 14 | Update_Security_Policy_EMAIL: 15 | description: 'Update Security Policy Email' 16 | type: boolean 17 | required: false 18 | Compress_Images: 19 | description: 'Compress / Optimize Images' 20 | type: boolean 21 | required: false 22 | Generate_Table_Of_Contents: 23 | description: 'Generate Table Of Contents' 24 | type: boolean 25 | required: false 26 | Generate_Metrics_File: 27 | description: 'Generate Metrics Image File' 28 | type: boolean 29 | required: false 30 | Generate_Index_File: 31 | description: 'Generate Index File' 32 | type: boolean 33 | required: false 34 | Download_Files_Or_Folder: 35 | description: 'Download a file or folder from a GitHub Repo' 36 | required: False 37 | default: '' 38 | 39 | jobs: 40 | Repo_Builder: 41 | name: Repo Template Builder 42 | runs-on: ubuntu-20.04 43 | steps: 44 | - uses: actions/checkout@v2 45 | ### Update links in README file 46 | - name: Updating links in README content 47 | if: ${{ github.event.inputs.Replace_Links_In_Markdown == 'true' }} 48 | run: | 49 | sudo apt-get install python3 50 | python3 .github/py_repo_tools/replace_repo_links.py 51 | 52 | 53 | ### Metric Images 54 | 55 | - name: Generating Metrics Image 56 | if: ${{ github.event.inputs.Generate_Metrics_File == 'true' }} 57 | uses: lowlighter/metrics@v3.24 58 | with: 59 | filename: stargazers-metrics.svg 60 | filepath: /.github/ 61 | plugin_stargazers_charts_type: chartist 62 | token: ${{ secrets.METRICS_TOKEN }} 63 | 64 | 65 | 66 | base: "" 67 | 68 | config_octicon: yes 69 | 70 | plugin_stargazers: yes 71 | plugin_contributors: yes 72 | 73 | 74 | ## - name: Move Metrics Image 75 | 76 | # if: ${{ github.event.inputs.Generate_Metrics_File == 'true' }} 77 | 78 | # run: | 79 | # git mv -f ~/work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/metrics.plugin.stargazers.svg ~/work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/.github 80 | 81 | 82 | ### Table Of Contents 83 | - name: Generating Table Of Contents 84 | if: ${{ github.event.inputs.Generate_Table_Of_Contents == 'true' }} 85 | run: | 86 | npx markdown-toc-gen update README.md 87 | 88 | 89 | ### Generate Index File 90 | - name: Generating Index File 91 | if: ${{ github.event.inputs.Generate_Index_File == 'true' }} 92 | run: | 93 | sudo apt-get install python3 94 | INPUT_STORE=${{ github.event.repository.url }} python3 .github/py_repo_tools/generate_index_file.py 95 | 96 | 97 | 98 | ### Optimize / Compress Image 99 | - name: Optimizing Images 100 | if: ${{ github.event.inputs.Compress_Images == 'true' }} 101 | run: | 102 | sudo apt-get install python3 python3-pip 103 | pip3 install pillow optimize-images 104 | optimize-images ./ 105 | ### Replace COC E-mail 106 | - name: Updating Code Of Conduct E-Mail 107 | if: ${{ github.event.inputs.Update_Code_Of_Conduct_EMAIL == 'true' }} 108 | run: | 109 | sudo apt-get install python3 110 | python3 .github/py_repo_tools/replace_code_of_conduct_info.py 111 | 112 | ### Replace Security Policy E-mail 113 | - name: Updating Security Policy E-Mail 114 | if: ${{ github.event.inputs.Update_Security_Policy_EMAIL == 'true' }} 115 | run: | 116 | sudo apt-get install python3 117 | python3 .github/py_repo_tools/replace_security_policy_email.py 118 | 119 | 120 | ### Download a file or folder from a GitHub repo 121 | - name: Downloading file / folder from GitHub Repo 122 | if: ${{ github.event.inputs.Download_Files_Or_Folder != ''}} 123 | run: | 124 | chmod +x .github/py_repo_tools/shell_scripts/github_downloader.sh 125 | .github/py_repo_tools/shell_scripts/github_downloader.sh ${{ github.event.inputs.Download_Files_Or_Folder}} 126 | 127 | 128 | 129 | ### Commit updates (if any) 130 | - name: Commiting updates 131 | run: | 132 | git config --global user.name "github-actions[bot]" 133 | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" 134 | git add -A 135 | git commit -m "Updated Content" 136 | git push 137 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | the following e-mail address example@hello.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /.github/settings.yml: -------------------------------------------------------------------------------- 1 | repository: 2 | # See https://developer.github.com/v3/repos/#edit for all available settings. 3 | 4 | # The name of the repository. Changing this will rename the repository 5 | #name: repo-name 6 | 7 | # A short description of the repository that will show up on GitHub 8 | #description: description of repo 9 | 10 | # A URL with more information about the repository 11 | #homepage: https://example.github.io/ 12 | 13 | # A comma-separated list of topics to set on the repository 14 | #topics: project, template, project-template 15 | 16 | # Either `true` to make the repository private, or `false` to make it public. 17 | #private: false 18 | 19 | # Either `true` to enable issues for this repository, `false` to disable them. 20 | #has_issues: true 21 | 22 | # Either `true` to enable the wiki for this repository, `false` to disable it. 23 | #has_wiki: true 24 | 25 | # Either `true` to enable downloads for this repository, `false` to disable them. 26 | #has_downloads: true 27 | 28 | # Updates the default branch for this repository. 29 | #default_branch: master 30 | 31 | # Either `true` to allow squash-merging pull requests, or `false` to prevent 32 | # squash-merging. 33 | #allow_squash_merge: true 34 | 35 | # Either `true` to allow merging pull requests with a merge commit, or `false` 36 | # to prevent merging pull requests with merge commits. 37 | #allow_merge_commit: true 38 | 39 | # Either `true` to allow rebase-merging pull requests, or `false` to prevent 40 | # rebase-merging. 41 | #allow_rebase_merge: true 42 | 43 | # Labels: define labels for Issues and Pull Requests 44 | labels: 45 | - name: 'Type: Bug' 46 | color: e80c0c 47 | description: Something isn't working as expected. 48 | 49 | - name: 'Type: Enhancement' 50 | color: 54b2ff 51 | description: Suggest an improvement for an existing feature. 52 | 53 | - name: 'Type: Feature' 54 | color: 54b2ff 55 | description: Suggest a new feature. 56 | 57 | - name: 'Type: Security' 58 | color: fbff00 59 | description: A problem or enhancement related to a security issue. 60 | 61 | - name: 'Type: Question' 62 | color: 9309ab 63 | description: Request for information. 64 | 65 | - name: 'Type: Test' 66 | color: ce54e3 67 | description: A problem or enhancement related to a test. 68 | 69 | - name: 'Status: Awaiting Review' 70 | color: 24d15d 71 | description: Ready for review. 72 | 73 | - name: 'Status: WIP' 74 | color: 07b340 75 | description: Currently being worked on. 76 | 77 | - name: 'Status: Waiting' 78 | color: 38C968 79 | description: Waiting on something else to be ready. 80 | 81 | - name: 'Status: Stale' 82 | color: 66b38a 83 | description: Has had no activity for some time. 84 | 85 | - name: 'Duplicate' 86 | color: EB862D 87 | description: Duplicate of another issue. 88 | 89 | - name: 'Invalid' 90 | color: faef50 91 | description: This issue doesn't seem right. 92 | 93 | - name: 'Priority: High +' 94 | color: ff008c 95 | description: Task is considered higher-priority. 96 | 97 | - name: 'Priority: Low -' 98 | color: 690a34 99 | description: Task is considered lower-priority. 100 | 101 | - name: 'Documentation' 102 | color: 2fbceb 103 | description: An issue/change with the documentation. 104 | 105 | - name: "Won't fix" 106 | color: C8D9E6 107 | description: Reported issue is working as intended. 108 | 109 | - name: '3rd party issue' 110 | color: e88707 111 | description: This issue might be caused by a 3rd party script/package/other reasons 112 | 113 | - name: 'Os: Windows' 114 | color: AEB1C2 115 | description: Is Windows-specific 116 | 117 | - name: 'Os: Mac' 118 | color: AEB1C2 119 | description: Is Mac-specific 120 | 121 | - name: 'Os: Linux' 122 | color: AEB1C2 123 | description: Is Linux-specific 124 | # # Collaborators: give specific users access to this repository. 125 | # # See https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator for available options 126 | # collaborators: 127 | # # - username: bkeepers 128 | # # permission: push 129 | # # - username: hubot 130 | # # permission: pull 131 | 132 | # # Note: `permission` is only valid on organization-owned repositories. 133 | # # The permission to grant the collaborator. Can be one of: 134 | # # * `pull` - can pull, but not push to or administer this repository. 135 | # # * `push` - can pull and push, but not administer this repository. 136 | # # * `admin` - can pull, push and administer this repository. 137 | # # * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. 138 | # # * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access. 139 | 140 | # # See https://developer.github.com/v3/teams/#add-or-update-team-repository for available options 141 | # teams: 142 | # - name: core 143 | # # The permission to grant the team. Can be one of: 144 | # # * `pull` - can pull, but not push to or administer this repository. 145 | # # * `push` - can pull and push, but not administer this repository. 146 | # # * `admin` - can pull, push and administer this repository. 147 | # # * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. 148 | # # * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access. 149 | # permission: admin 150 | # - name: docs 151 | # permission: push 152 | 153 | # branches: 154 | # - name: master 155 | # # https://developer.github.com/v3/repos/branches/#update-branch-protection 156 | # # Branch Protection settings. Set to null to disable 157 | # protection: 158 | # # Required. Require at least one approving review on a pull request, before merging. Set to null to disable. 159 | # required_pull_request_reviews: 160 | # # The number of approvals required. (1-6) 161 | # required_approving_review_count: 1 162 | # # Dismiss approved reviews automatically when a new commit is pushed. 163 | # dismiss_stale_reviews: true 164 | # # Blocks merge until code owners have reviewed. 165 | # require_code_owner_reviews: true 166 | # # Specify which users and teams can dismiss pull request reviews. Pass an empty dismissal_restrictions object to disable. User and team dismissal_restrictions are only available for organization-owned repositories. Omit this parameter for personal repositories. 167 | # dismissal_restrictions: 168 | # users: [] 169 | # teams: [] 170 | # # Required. Require status checks to pass before merging. Set to null to disable 171 | # required_status_checks: 172 | # # Required. Require branches to be up to date before merging. 173 | # strict: true 174 | # # Required. The list of status checks to require in order to merge into this branch 175 | # contexts: [] 176 | # # Required. Enforce all configured restrictions for administrators. Set to true to enforce required status checks for repository administrators. Set to null to disable. 177 | # enforce_admins: true 178 | # # Prevent merge commits from being pushed to matching branches 179 | # required_linear_history: true 180 | # # Required. Restrict who can push to this branch. Team and user restrictions are only available for organization-owned repositories. Set to null to disable. 181 | # restrictions: 182 | # apps: [] 183 | # users: [] 184 | # teams: [] 185 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Android Reverse Engineering 2 |

3 | 4 | 5 |

6 | 7 | 8 |

9 | A curated list of awesome Android Reverse Engineering training, resources, and tools. 10 | 11 | 12 |

13 | 14 | 15 | [![Awesome](https://awesome.re/badge.svg)](https://github.com/MarketingPipeline/Awesome-Repo-Template/) 16 | ![GitHub contributors](https://img.shields.io/github/contributors/user1342/Awesome-Android-Reverse-Engineering) 17 | ![GitHub Repo stars](https://img.shields.io/github/stars/user1342/Awesome-Android-Reverse-Engineering?style=social) 18 | ![GitHub watchers](https://img.shields.io/github/watchers/user1342/Awesome-Android-Reverse-Engineering?style=social) 19 | ![GitHub last commit](https://img.shields.io/github/last-commit/user1342/Awesome-Android-Reverse-Engineering) 20 |
21 | 22 |
23 | 24 | # How to Use 25 | Awesome-Android-Reverse-Engineering is an amazing list for people who work in taking apart Android applications, systems, or components. Simply press ```ctrl + F``` to search for a keyword, go through our Contents Menu, or lookout for a '☆' indicating some great and up-to-date resources. 26 | 27 | # Contents 28 | - [Training](#training) 29 | - [Courses and Material](#courses-and-material) 30 | - [Videos](#videos) 31 | - [Books](#books) 32 | - [Tools](#tools) 33 | - [Static Analysis Tools](#static-analysis-tools) 34 | - [Dynamic Analysis Tools](#dynamic-analysis-tools) 35 | - [Decompilers](#decompilers) 36 | - [Malware Analysis](#malware-analysis) 37 | - [Resources](#resources) 38 | - [Documentation](#documentation) 39 | - [Case Studies](#case-studies) 40 | - [CTFs and CrackMes](#ctfs-and-crackmes) 41 | - [Misc](#misc) 42 | - [Obfuscation & Anti-Reversing](#obfuscation--anti-reversing) 43 | - [Firmware & Kernel Analysis](#firmware--kernel-analysis) 44 | - [Cloud API & Web Services Reversing](#cloud-api--web-services-reversing) 45 | 46 | ## Training 47 | 48 | ### Courses and Material 49 | - [☆ Maddie Stone's Android Reverse Engineering Training](https://www.ragingrock.com/AndroidAppRE/) - A comprehensive online training course on Android reverse engineering by Maddie Stone. 50 | - [Introduction to Assembly from Azeria Labs](https://azeria-labs.com/writing-arm-assembly-part-1/) - Covering everything from data types, registers, the ARM instruction set, memory instructions, and more. 51 | 52 | ### Videos 53 | - [Kristina Balaam Android Reverse Engineering](https://www.youtube.com/@chmodxx) - A video series on reverse engineering basics and reverse engineering Android malware. 54 | - [LaurieWired Android Reverse Engineering videos](https://www.youtube.com/@lauriewired) - A YouTube channel focusing on Android reverse engineering. 55 | - [Using Frida To Modify Android Games | Mobile Dynamic Instrumentation](https://www.youtube.com/watch?v=BXtAujoPhQw) - Focusing on reverse engineering Android applications and on using Frida to dynamically modify Android games. 56 | 57 | ### Books 58 | - [☆ Android Internals: A Confectioner's Cookbook](http://newandroidbook.com/) - An in-depth exploration of the inner-workings of Android. 59 | - [Blue Fox: Arm Assembly Internals and Reverse Engineering](https://www.amazon.co.uk/dp/1119745306) - Provides a solid foundation in ARM assembly internals. 60 | - [Android Software Internals Quick Reference](https://www.amazon.co.uk/Android-Software-Internals-Quick-Reference/dp/1484269136) - Techniques in Java and Android system internals. 61 | - [☆ Mobile Offensive Security Pocket Guide](https://www.amazon.co.uk/Mobile-Offensive-Security-Pocket-Guide/dp/1399921959) - Key information, approaches, and tooling for mobile penetration testers. 62 | - [Android Security Internals](https://nostarch.com/androidsecurity) - Detailed look into Android security architecture. 63 | - [Android Malware Detection with Machine Learning](https://nostarch.com/androidmalwaredetection) - Machine learning techniques for detecting malicious apps. 64 | - [Android Hacker's Handbook](https://www.amazon.com/Android-Hackers-Handbook-Joshua-Drake/dp/111860864X/) - A deep dive into Android exploitation and forensics. 65 | - [Practical Reverse Engineering](https://www.amazon.com/Practical-Reverse-Engineering-Reversing-Obfuscation/dp/1118787315/) - Covers low-level reverse engineering concepts, including ARM assembly. 66 | - [The IDA Pro Book](https://nostarch.com/idapro2.htm) - Essential for advanced IDA Pro techniques. 67 | 68 | ## Tools 69 | 70 | ### Static Analysis Tools 71 | - [QARK](https://github.com/linkedin/qark) - An open-source tool for automatic Android app vulnerability scanning. 72 | - [Quark Engine](https://github.com/quark-engine/quark-engine) - Integrates various tools as Quark Script APIs for mobile security research. 73 | - [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) - Supports both static and dynamic analysis for Android app security testing. 74 | - [AndroBugs Framework](https://github.com/AndroBugs/AndroBugs_Framework) - Analyzes and scans Android apps for security issues. 75 | - [☆ imjtool](http://newandroidbook.com/tools/imjtool.html) - Firmware unpacking tool for various vendors and formats. 76 | - [Android Studio](https://developer.android.com/studio) - Useful for analyzing decompiled apps via an IDE. 77 | - [☆ APK Dependency Graph](https://github.com/alexzaitsev/apk-dependency-graph) - Visualizes APK class dependencies. 78 | - [disarm](http://newandroidbook.com/tools/disarm.html) - Command line utility for parsing ARM-64 instructions. 79 | - [COVA](https://github.com/secure-software-engineering/COVA) - Computes path constraints based on user-defined APIs. 80 | - [DIS{integrity}](https://github.com/user1342/DISintegrity) - Analyzes APKs for root, integrity, and tamper detection. 81 | - [Dexcalibur](https://github.com/FrenchYeti/dexcalibur) - Automated tool for analyzing and instrumenting Android applications. 82 | 83 | #### De-Obfuscation 84 | - [☆ Obfu[DE]scate](https://github.com/user1342/Obfu-DE-Scate) - De-obfuscation tool that uses fuzzy comparison logic. 85 | - [TinySmaliEmulator](https://github.com/amoulu/TinySmaliEmulator) - Minimalist smali emulator for "decrypting" obfuscated strings. 86 | - [simplify](https://github.com/CalebFenton/simplify) - Android virtual machine and deobfuscator. 87 | - [deoptfuscator](https://github.com/Gyoonus/deoptfuscator) - Tool for deobfuscating apps using control-flow obfuscation. 88 | 89 | ### Dynamic Analysis Tools 90 | - [Drozer](https://github.com/WithSecureLabs/drozer) - Framework for Android security testing with dynamic analysis features. 91 | - [jtrace](http://newandroidbook.com/tools/jtrace.html) - Similar to strace, but for Android system calls. 92 | - [sesearch](https://linux.die.net/man/1/sesearch) - Command line tool for querying SELinux policies. 93 | - [AutoDroid](https://github.com/user1342/AutoDroid) - Mass APK gathering and analysis tool. 94 | - **Networking:** 95 | - [☆ Burp Suite](https://portswigger.net/burp) - Commercial tool for analyzing network traffic of Android apps. 96 | - [Wireshark](https://www.wireshark.org/) - Open-source network protocol analyzer. 97 | - [SSLsplit](https://github.com/droe/sslsplit) - Intercepts and manipulates SSL/TLS encrypted traffic. 98 | - [MITMProxy](https://mitmproxy.org/) - Man-in-the-middle proxy for analyzing network traffic. 99 | - [apk-mitm](https://github.com/shroudedcode/apk-mitm) - Prepares APKs for HTTPS inspection. 100 | - **Dynamic Instrumentation:** 101 | - [☆ Frida](https://frida.re/) - Dynamic instrumentation toolkit for runtime manipulation. 102 | - **Xposed Framework** - For hooking and modifying app behavior at runtime. 103 | - [☆ Objection](https://github.com/sensepost/objection) - Runtime exploration tool to bypass app security controls. 104 | - [RMS Runtime Mobile Security](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) - Frida web interface. 105 | - [☆ FriDump](https://github.com/Nightbringer21/fridump) - Uses Frida to dump memory of running apps. 106 | - [jnitrace](https://github.com/chame1eon/jnitrace) - Frida-based JNI API tracer. 107 | - [☆ Binder Trace](https://github.com/foundryzero/binder-trace) - Intercepts and parses Android Binder messages. 108 | 109 | ### Decompilers 110 | - [☆ JADX](https://github.com/skylot/jadx) - Decompiles APKs into Java source code. 111 | - [Procyon](https://github.com/mstrobel/procyon) - Suite of Java decompilation tools. 112 | - [Cfr](https://github.com/leibnitz27/cfr) - Supports decompilation of Android APK files. 113 | - [FernFlower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine) - Analytical decompiler for Java. 114 | - [☆ Apktool](https://ibotpeaches.github.io/Apktool/) - Popular tool for decompiling/recompiling APK files. 115 | - [DEX2JAR](https://github.com/pxb1988/dex2jar) - Converts DEX files to JAR files. 116 | - [JDGui](http://java-decompiler.github.io/) - Graphical utility to view Java source from class files. 117 | - [IDA Pro](https://hex-rays.com/ida-pro/) - Commercial disassembler and debugger. 118 | - [☆ Ghidra](https://ghidra-sre.org/) - Free and open-source SRE framework. 119 | - **Additional Decompilers:** 120 | - JEB Decompiler - Commercial decompiler for Android apps. 121 | - [Radare2](https://rada.re/n/) - Reverse engineering framework with disassembly and debugging. 122 | - [Androguard](https://github.com/androguard/androguard) - Analyzes and reverse engineers Android apps. 123 | - [apk2gold](https://github.com/lxdvs/apk2gold) - Decompiles Android apps to Java (note: may be outdated). 124 | - [AndroidProjectCreator](https://github.com/ThisIsLibra/AndroidProjectCreator) - Converts APKs to Android Studio projects. 125 | - [APK Studio](https://github.com/vaibhavpandeyvpz/apkstudio) - Qt-based IDE for reverse-engineering APKs. 126 | - [show-java](https://github.com/niranjan94/show-java) - APK, JAR & Dex decompiler. 127 | - [☆ APKLab](https://marketplace.visualstudio.com/items?itemName=Surendrajat.apklab) - VS Code extension integrating multiple tools. 128 | 129 | ### Malware Analysis 130 | - [DroidDetective](https://github.com/user1342/DroidDetective) - Machine learning malware analysis for Android apps. 131 | - [Cuckoo Droid](https://github.com/idanr1986/cuckoodroid-2.0) - Automated Android malware analysis with Cuckoo Sandbox. 132 | - [androwarn](https://github.com/maaaaz/androwarn) - Static code analyzer for malicious Android applications. 133 | 134 | ## Resources 135 | 136 | ### Documentation 137 | - [Android Security Documentation](https://source.android.com/docs/security) - Official Google documentation on Android security. 138 | - [Android Reverse Engineering Challenges](https://github.com/apsdehal/awesome-ctf#reverse-engineering) - Curated list of reverse engineering challenges and CTFs. 139 | - [AndroidXref](http://androidxref.com/) - Open code search for Android source. 140 | - [APKMirror](https://www.apkmirror.com/) - Repository of APKs from the Play Store and user uploads. 141 | - [APKPure](https://m.apkpure.com/) - Repository of APKs for testing and research. 142 | 143 | ### Case Studies 144 | - [A Reverse Engineer’s Post-mortem Of The Houseparty Video Chat App](https://www.jamesstevenson.me/a-reverse-engineers-post-mortem-of-the-houseparty-video-chat-app/) 145 | - [SharkBot: a “new” generation Android banking Trojan being distributed on Google Play Store](https://research.nccgroup.com/2022/03/03/sharkbot-a-new-generation-android-banking-trojan-being-distributed-on-google-play-store/) 146 | - [In-the-Wild Series: Android Exploits](https://googleprojectzero.blogspot.com/2021/01/in-wild-series-android-exploits.html) 147 | 148 | ## CTFs and CrackMes 149 | - [☆ UnCrackable Mobile Apps](https://github.com/OWASP/owasp-mastg/tree/master/Crackmes) - OWASP Android app CrackMes. 150 | - [CyberTruckChallenge19](https://github.com/nowsecure/cybertruckchallenge19) - Security workshop material from CyberTruck Challenge 2019. 151 | - [KGB Messenger](https://github.com/tlamb96/kgb_messenger) - CTF challenge for learning Android reverse engineering. 152 | - [Flare-On Challenge](https://www.fireeye.com/services/flare-on.html) - High-level reverse engineering CTF with Android challenges. 153 | - [OverTheWire Narnia](http://overthewire.org/wargames/narnia/) - Not Android-specific but excellent for binary exploitation practice. 154 | 155 | ## Misc 156 | - [LADB](https://github.com/tytydraco/LADB) - Local ADB shell for Android. 157 | - [Broken Droid Factory](https://github.com/user1342/Broken-Droid-Factory) - Generates pseudo-random vulnerable Android apps for training. 158 | - [uber-apk-signer](https://github.com/patrickfav/uber-apk-signer) - CLI tool for signing and zip aligning APKs. 159 | - [RUNIC tamper detection demo](https://github.com/user1342/RUNIC) - Demo for understanding Android tamper detection and integrity systems. 160 | 161 | ## Obfuscation & Anti-Reversing 162 | - **Obfuscation Tools:** 163 | - [ProGuard](https://www.guardsquare.com/manual/configuration/usage) - Code shrinker, optimizer, and obfuscator. 164 | - [R8](https://developer.android.com/studio/build/shrink-code) - Google’s code shrinker and obfuscator. 165 | - [DexGuard](https://www.guardsquare.com/dexguard) - Commercial tool for advanced app obfuscation. 166 | - **Anti-Reversing Techniques:** 167 | - [Android Tamper Detection Framework (ATDF)](https://github.com/Fuzion24/AndroidTamperDetection) - Implements tamper detection. 168 | - [Paranoid](https://github.com/sundaysec/Paranoid) - Detects root and tampering. 169 | - [libhooker](https://github.com/hluwa/libhooker) - Detects hooking frameworks like Frida and Xposed. 170 | 171 | ## Firmware & Kernel Analysis 172 | - [Binwalk](https://github.com/ReFirmLabs/binwalk) - Analyze, extract, and reverse engineer firmware images. 173 | - [AFLSmart](https://github.com/aflsmart/aflsmart) - Fuzzer optimized for firmware image analysis. 174 | - [Android Kernel Exploits](https://github.com/saelo/android_kernel_exploitation) - Collection of kernel vulnerabilities and exploit techniques. 175 | - [FirmWire](https://github.com/FirmWire/FirmWire) - Dynamic analysis platform for baseband firmware. 176 | 177 | 178 | ## Contributing 179 | Your contributions are always welcome! Please read the contribution guidelines first. We follow the Contributor Covenant Code of Conduct, so please review and adhere to it when contributing. 180 | 181 | ## Licence 182 | ![GitHub](https://img.shields.io/github/license/user1342/Awesome-Android-Reverse-Engineering) 183 | This project is licensed under the MIT License - see the LICENSE.md file for details. 184 | --------------------------------------------------------------------------------