Giter Club home page Giter Club logo

stackzy's Introduction

๐Ÿš€ stackzy

Twitter: theapache64

A desktop app to analyse APK. Built using Compose desktop

โœจ Demo

๐Ÿ“ฝ๏ธ Usage

๐Ÿ’ป Install

Platform Download Status
Linux Download Button Experimental
Windows Download Button Experimental
MacOS Download Button Experimental

โ„น๏ธ To run the jar, you need Java 15 or above. If you hate running jar, you can clone the repo and execute ./gradlew createDistributable to build executable for your system.

๐Ÿ‹ Dependency

  • Java 8 or above

๐Ÿ—๏ธ๏ธ Built with

What How
๐ŸŽญ User Interface Compose Desktop
๐Ÿ— Architecture MVVM
๐Ÿง  Backend Retrosheet
๐Ÿ’‰ DI Dagger2
๐Ÿ› ๏ธ APK Decompiling ApkTool
โ˜• Dex to Java jadx
๐Ÿ›ฃ๏ธ Navigation Decompose
๐ŸŒŠ Async Coroutines + Flow
๐ŸŒ Networking Retrofit
๐Ÿ“„ JSON Moshi
โŒจ๏ธ Logging Arbor
๐Ÿ’ป ADB Adam
๐Ÿงช Testing DaggerMock + JUnit

๐Ÿ˜‚ Fun Facts

  • Stackzy uses a google sheet as the backend, thanks to Retrosheet

  • The initial name of Stackzy was Which Stack

  • Stackzy uses a gloabl caching mechanism, which works as a centralized caching system. Means, if someone decompiled WhatsApp, the next time you try to find the stack, it won't be decompiled and the result will be served from the cache.

๐Ÿ™‡ Credits

  • Special thanks to @mikepenz for contributing 200+ libraries from his project AboutLibraries ๐Ÿ“š
  • Special thanks to @SpikeySanju for the beautiful design ๐Ÿ˜Ž
  • Icons are from flaticon.com
  • Illustrations are from evernote.design
  • Thanks to all amazing people at Twitter for inspiring me to continue the development of this project.

๐Ÿฅผ Test

Before executing any test, ensure

  • A device has connected to the adb
  • a valid PLAY_API_GOOGLE_USERNAME and PLAY_API_GOOGLE_PASSWORD defined in your environment.

๐Ÿค Contributing

โค Show your support

Give a โญ๏ธ if this project helped you!

Patron Link Buy Me A Coffee

๐Ÿ“ License

Copyright ยฉ 2021 - theapache64

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

This README was generated by readgen โค

stackzy's People

Contributors

arkivanov avatar fareeshussain avatar imgbotapp avatar mikepenz avatar smellouk avatar theapache64 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stackzy's Issues

Update logo

Update launcher logo as well as splash logo - (with brand new design)

Suggestion for improvement in design

At bottom of decompiled library listing page there is sharp cut at bottom of the recycler view you can put gradient so fade at bottom side it will looks better. Here I am attaching your current page screenhot as well suggested design screenshot.

CURENT SCREEN

SUGGESTION

Show author name

Rather than showing library's category name, show author name

Update Library Detection Algorithm

Hint: Use JADX (rather than apktool), analyse .java files (rather than .smali files) and look for the project package rather than all packages.

Some APK fails to decompile

Some APKs are failing at the time of decompile

java.io.IOException: Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
	at brut.androlib.ApkDecoder.hasResources(ApkDecoder.java:315)
	at brut.androlib.ApkDecoder.decode(ApkDecoder.java:103)
	at brut.apktool.Main.cmdDecode(Main.java:179)
	at brut.apktool.Main.main(Main.java:82)
Caused by: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
	at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:55)
	at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:38)
	at brut.directory.ExtFile.getDirectory(ExtFile.java:52)
	at brut.androlib.ApkDecoder.hasResources(ApkDecoder.java:313)
	... 3 more
Caused by: java.util.zip.ZipException: error in opening zip file
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(ZipFile.java:225)
	at java.util.zip.ZipFile.<init>(ZipFile.java:155)
	at java.util.zip.ZipFile.<init>(ZipFile.java:169)
	at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:53)
	... 6 more

Use stackzy on MacOS, did not analysis any library.

Describe the bug
the build with return: An unexpected error occurred while trying to open file /private/var/****/apk-tool.jar

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'ADB, SELECT Nexus 5x, '
  2. Click on 'Musically, com.zhiliaoapp.musically'
  3. Waiting to build with
  4. See error: An unexpected error occurred while trying to open file /private/var/****/apk-tool.jar

Expected behavior
list all library of Musically app

Actual behavior
A clear and concise description of what actually happened.

Screenshots

Desktop (please complete the following information):

  • OS: [Mac mini]
  • Version [11.4 Big Sur]
  • java version: [1.8.0_141]
  • Nexus 5x: [Android 10, Pixel Experience OS]
  • stackzy version: [1.0.5]

Result Cacheing

Store the results in a sheet to save the download and decompile time for another person.

Dynamic adb installation

Incase if ANDROID_HOME not present, download adb from remote (should support windows, linux and mac)

Open in playstore

When search returns empty, there should be a button which will open default market in the connected device

Add version check

Check for latest version in splash and show popup to update to latest version.

Add tab to app listing page

When listing apps from adb,it'd be nice if we can divide it into two tabs, ie System Apps and 3rd Party Apps

Sync Interval

Define a sync interval in remote config to prevent sync on every app startup

UberJar not working

Describe the bug

I've downloaded Stackzy-linux-x64-1.0.0.jar from the releases (v1.0.0-beta03) and executed with java -jar Stackzy-linux-x64-1.0.0.jar, but am getting below error

Crashlog
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
	at java.base/sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:335)
	at java.base/sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:268)
	at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:273)
	at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:230)
	at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:759)
	at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1038)
	at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69)
	at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:873)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:807)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:427)
	at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:760)
	at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)

To Reproduce
Steps to reproduce the behavior:

  1. Download any uberjar from here
  2. Execute it using java -jar Stackzy-*.jar
  3. See error

Expected behavior
Should launch Stackzy window

Screenshots

image

Desktop (please complete the following information):

  • OS: Ubuntu 16.04
  • Stackzy Version: v1.0.0-beta03

Additional context
Add any other context about the problem here.

Search issue

when searching, the results are not proper sometimes.

Permission issue - windows

Showing AdbWinApi.dll (access denied) when launching the program

Additional Info

  • OS: Windows 7, some Windows 10

Workaround

  • Try Run as admin

Cache the APK to skip Downloading APK at client

Is your feature request related to a problem? Please describe.
It will solve slow internet related problems

Describe the solution you'd like
APK should be downloaded to servers and results should be shared on clients. This will speed up the process and effective caching can help to display results with much ease.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.