├── .gitignore ├── APKEncryptor-Android ├── .gitignore ├── .idea │ ├── caches │ │ └── gradle_models.ser │ ├── codeStyles │ │ └── Project.xml │ ├── gradle.xml │ ├── jarRepositories.xml │ ├── misc.xml │ └── runConfigurations.xml ├── TreeView │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── unnamed │ │ │ └── b │ │ │ └── atv │ │ │ ├── holder │ │ │ └── SimpleViewHolder.java │ │ │ ├── model │ │ │ └── TreeNode.java │ │ │ └── view │ │ │ ├── AndroidTreeView.java │ │ │ ├── TreeNodeWrapperView.java │ │ │ └── TwoDScrollView.java │ │ └── res │ │ └── values │ │ ├── ids.xml │ │ └── styles.xml ├── app │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ ├── antlr-runtime-3.5.2.jar │ │ ├── apksigner.jar │ │ ├── apktool-cli.jar │ │ ├── dexlib2.jar │ │ ├── guava-18.0.jar │ │ ├── kellinwood-logging-android-1.4.jar │ │ ├── kellinwood-logging-lib-1.1.jar │ │ ├── kellinwood-logging-log4j-1.0.jar │ │ ├── sc-light-jdk15on-1.47.0.2.jar │ │ ├── scpkix-jdk15on-1.47.0.2.jar │ │ ├── scprov-jdk15on-1.47.0.2.jar │ │ ├── sun.misc.BASE64Decoder.jar │ │ ├── systembartint-1.0.4.jar │ │ ├── zipio-lib-1.8.jar │ │ ├── zipsigner-lib-1.17.jar │ │ └── zipsigner-lib-optional-1.17.jar │ ├── proguard-keys.txt │ ├── proguard-rules.pro │ ├── release │ │ └── output.json │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ ├── OpenSourceList.json │ │ │ ├── conf.json │ │ │ ├── encryptString │ │ │ │ ├── BYDecoder.smali │ │ │ │ ├── MethodPool.smali │ │ │ │ ├── StringPool.smali │ │ │ │ ├── keys.txt │ │ │ │ └── method.smali │ │ │ ├── fly.jks │ │ │ └── self.key │ │ │ ├── java │ │ │ ├── android │ │ │ │ └── util │ │ │ │ │ ├── AttributeSet.java │ │ │ │ │ ├── SparseArray.java │ │ │ │ │ └── TypedValue.java │ │ │ ├── com │ │ │ │ ├── beingyi │ │ │ │ │ └── confuse │ │ │ │ │ │ ├── ArscObfuser.java │ │ │ │ │ │ └── Main.java │ │ │ │ ├── fly │ │ │ │ │ └── apkencryptor │ │ │ │ │ │ ├── Interface │ │ │ │ │ │ ├── OpenFileDialogCallBack.java │ │ │ │ │ │ └── SocketCallBack.java │ │ │ │ │ │ ├── activity │ │ │ │ │ │ ├── CreateKeystore.java │ │ │ │ │ │ ├── ErrReport.java │ │ │ │ │ │ ├── Example.java │ │ │ │ │ │ ├── ForgetPass.java │ │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ │ ├── OpenSourceList.java │ │ │ │ │ │ ├── Settings.java │ │ │ │ │ │ ├── login.java │ │ │ │ │ │ └── signup.java │ │ │ │ │ │ ├── adapter │ │ │ │ │ │ ├── MyAdapter.java │ │ │ │ │ │ └── SectionsPagerAdapter.java │ │ │ │ │ │ ├── application │ │ │ │ │ │ └── MyApp.java │ │ │ │ │ │ ├── axmleditor │ │ │ │ │ │ ├── decode │ │ │ │ │ │ │ ├── AXMLDoc.java │ │ │ │ │ │ │ ├── BNSNode.java │ │ │ │ │ │ │ ├── BTXTNode.java │ │ │ │ │ │ │ ├── BTagNode.java │ │ │ │ │ │ │ ├── BXMLNode.java │ │ │ │ │ │ │ ├── BXMLTree.java │ │ │ │ │ │ │ ├── IAXMLSerialize.java │ │ │ │ │ │ │ ├── IVisitable.java │ │ │ │ │ │ │ ├── IVisitor.java │ │ │ │ │ │ │ ├── IntReader.java │ │ │ │ │ │ │ ├── IntWriter.java │ │ │ │ │ │ │ ├── ResBlock.java │ │ │ │ │ │ │ ├── StringBlock.java │ │ │ │ │ │ │ └── XMLVisitor.java │ │ │ │ │ │ ├── editor │ │ │ │ │ │ │ ├── ApplicationInfoEditor.java │ │ │ │ │ │ │ ├── BaseEditor.java │ │ │ │ │ │ │ ├── MetaDataEditor.java │ │ │ │ │ │ │ ├── PackageInfoEditor.java │ │ │ │ │ │ │ ├── PermissionEditor.java │ │ │ │ │ │ │ └── XEditor.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── CSString.java │ │ │ │ │ │ │ ├── Cast.java │ │ │ │ │ │ │ ├── IOUtils.java │ │ │ │ │ │ │ ├── NodeValue.java │ │ │ │ │ │ │ ├── Pair.java │ │ │ │ │ │ │ └── TypedValue.java │ │ │ │ │ │ ├── base │ │ │ │ │ │ ├── BaseActivity.java │ │ │ │ │ │ └── BaseFragment.java │ │ │ │ │ │ ├── bean │ │ │ │ │ │ └── FileInfo.java │ │ │ │ │ │ ├── crash │ │ │ │ │ │ └── CrashHandler.java │ │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── ActivateKey.java │ │ │ │ │ │ ├── PkgSelector.java │ │ │ │ │ │ ├── SelectFile.java │ │ │ │ │ │ ├── SetKeyStore.java │ │ │ │ │ │ ├── TreePkgSelector.java │ │ │ │ │ │ └── UserInfoDialog.java │ │ │ │ │ │ ├── fragment │ │ │ │ │ │ ├── AddShell.java │ │ │ │ │ │ ├── EnRes.java │ │ │ │ │ │ ├── EnStr.java │ │ │ │ │ │ └── settings.java │ │ │ │ │ │ ├── task │ │ │ │ │ │ ├── BaseTask.java │ │ │ │ │ │ ├── EncryptResource │ │ │ │ │ │ │ └── EncryptResourceTask.java │ │ │ │ │ │ ├── EncryptString │ │ │ │ │ │ │ ├── EncryptStringTask.java │ │ │ │ │ │ │ └── MyDexBuilder.java │ │ │ │ │ │ └── ShellSub │ │ │ │ │ │ │ └── ShellSubTask.java │ │ │ │ │ │ ├── update │ │ │ │ │ │ ├── CheckUpdate.java │ │ │ │ │ │ ├── UpdateInfo.java │ │ │ │ │ │ └── UpdateInfoParser.java │ │ │ │ │ │ ├── utils │ │ │ │ │ │ ├── AES.java │ │ │ │ │ │ ├── APKUtils.java │ │ │ │ │ │ ├── AesUtil.java │ │ │ │ │ │ ├── AndroidManifestAnalyze.java │ │ │ │ │ │ ├── AndroidManifestRead.java │ │ │ │ │ │ ├── BES.java │ │ │ │ │ │ ├── BYProtectUtils.java │ │ │ │ │ │ ├── Base64Util.java │ │ │ │ │ │ ├── BitmapUtils.java │ │ │ │ │ │ ├── ByteEncoder.java │ │ │ │ │ │ ├── CompressUtils.java │ │ │ │ │ │ ├── Conf.java │ │ │ │ │ │ ├── Custom.java │ │ │ │ │ │ ├── CustomFun.java │ │ │ │ │ │ ├── DecompileUtils.java │ │ │ │ │ │ ├── DensityUtil.java │ │ │ │ │ │ ├── DexBuilderUtil.java │ │ │ │ │ │ ├── DexLoader.java │ │ │ │ │ │ ├── DexUtils.java │ │ │ │ │ │ ├── Ealert.java │ │ │ │ │ │ ├── EncryptorConfig.java │ │ │ │ │ │ ├── ExceptionUtils.java │ │ │ │ │ │ ├── FActivityInfo.java │ │ │ │ │ │ ├── FastFileWriter.java │ │ │ │ │ │ ├── FileEntry.java │ │ │ │ │ │ ├── FileInfoSort.java │ │ │ │ │ │ ├── FileSizeUtils.java │ │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ │ ├── ImgHelper.java │ │ │ │ │ │ ├── JKS.java │ │ │ │ │ │ ├── JniAlert.java │ │ │ │ │ │ ├── KeyWordUtils.java │ │ │ │ │ │ ├── LanguageUtil.java │ │ │ │ │ │ ├── LifeCallBack.java │ │ │ │ │ │ ├── ListUtil.java │ │ │ │ │ │ ├── LoadNetDex.java │ │ │ │ │ │ ├── LogUtils.java │ │ │ │ │ │ ├── MD5.java │ │ │ │ │ │ ├── ManifestParse.java │ │ │ │ │ │ ├── Native.java │ │ │ │ │ │ ├── NativeOpcode.java │ │ │ │ │ │ ├── OSUtils.java │ │ │ │ │ │ ├── PayChecker.java │ │ │ │ │ │ ├── Property.java │ │ │ │ │ │ ├── RecoveryPMS.java │ │ │ │ │ │ ├── SPUtils.java │ │ │ │ │ │ ├── SelfInfo.java │ │ │ │ │ │ ├── SignApkUtils.java │ │ │ │ │ │ ├── SocketUtils.java │ │ │ │ │ │ ├── StatusBarUtils.java │ │ │ │ │ │ ├── ThreadResult.java │ │ │ │ │ │ ├── TimeUtils.java │ │ │ │ │ │ ├── UserInfo.java │ │ │ │ │ │ ├── Util.java │ │ │ │ │ │ ├── ZipOut.java │ │ │ │ │ │ ├── ZipOutUtil.java │ │ │ │ │ │ ├── alert.java │ │ │ │ │ │ ├── getApkSign.java │ │ │ │ │ │ └── warn.java │ │ │ │ │ │ └── widget │ │ │ │ │ │ ├── DialogLoading.java │ │ │ │ │ │ ├── DynamicWave.java │ │ │ │ │ │ ├── ImgIcon.java │ │ │ │ │ │ ├── StatusBarHeightView.java │ │ │ │ │ │ ├── StepLoading.java │ │ │ │ │ │ └── ToastUtils.java │ │ │ │ └── iyfeng │ │ │ │ │ └── arsceditor │ │ │ │ │ ├── AndrolibResources.java │ │ │ │ │ └── ResDecoder │ │ │ │ │ ├── ARSCCallBack.java │ │ │ │ │ ├── ARSCDecoder.java │ │ │ │ │ ├── AXMLDecoder.java │ │ │ │ │ ├── GetResValues.java │ │ │ │ │ ├── IO │ │ │ │ │ ├── Duo.java │ │ │ │ │ ├── LEDataInputStream.java │ │ │ │ │ └── LEDataOutputStream.java │ │ │ │ │ ├── StringBlock.java │ │ │ │ │ └── data │ │ │ │ │ ├── ResConfig.java │ │ │ │ │ ├── ResConfigFlags.java │ │ │ │ │ ├── ResID.java │ │ │ │ │ ├── ResPackage.java │ │ │ │ │ ├── ResResSpec.java │ │ │ │ │ ├── ResResource.java │ │ │ │ │ ├── ResTable.java │ │ │ │ │ ├── ResType.java │ │ │ │ │ ├── ResTypeSpec.java │ │ │ │ │ ├── ResUnknownFiles.java │ │ │ │ │ ├── ResValuesFile.java │ │ │ │ │ └── value │ │ │ │ │ ├── ResArrayValue.java │ │ │ │ │ ├── ResAttr.java │ │ │ │ │ ├── ResBagValue.java │ │ │ │ │ ├── ResBoolValue.java │ │ │ │ │ ├── ResColorValue.java │ │ │ │ │ ├── ResDimenValue.java │ │ │ │ │ ├── ResEnumAttr.java │ │ │ │ │ ├── ResFileValue.java │ │ │ │ │ ├── ResFlagsAttr.java │ │ │ │ │ ├── ResFloatValue.java │ │ │ │ │ ├── ResFractionValue.java │ │ │ │ │ ├── ResIdValue.java │ │ │ │ │ ├── ResIntBasedValue.java │ │ │ │ │ ├── ResIntValue.java │ │ │ │ │ ├── ResReferenceValue.java │ │ │ │ │ ├── ResScalarValue.java │ │ │ │ │ ├── ResStringValue.java │ │ │ │ │ ├── ResStyleValue.java │ │ │ │ │ ├── ResValue.java │ │ │ │ │ ├── ResValueFactory.java │ │ │ │ │ └── TypedValue.java │ │ │ ├── maobyte │ │ │ │ ├── io │ │ │ │ │ ├── ZInput.java │ │ │ │ │ └── ZOutput.java │ │ │ │ ├── signer │ │ │ │ │ ├── ApkSigner.java │ │ │ │ │ └── key │ │ │ │ │ │ ├── BaseSignatureKey.java │ │ │ │ │ │ └── KeystoreKey.java │ │ │ │ ├── util │ │ │ │ │ ├── StreamUtil.java │ │ │ │ │ └── StringDecoder.java │ │ │ │ ├── xml │ │ │ │ │ └── decode │ │ │ │ │ │ ├── AXmlDecoder.java │ │ │ │ │ │ ├── AXmlResourceParser.java │ │ │ │ │ │ └── XmlPullParser.java │ │ │ │ └── zip │ │ │ │ │ ├── CopyEntryCallback.java │ │ │ │ │ ├── ExtractCallback.java │ │ │ │ │ ├── JarMarker.java │ │ │ │ │ ├── UnixStat.java │ │ │ │ │ ├── ZipCallback.java │ │ │ │ │ ├── ZipEntry.java │ │ │ │ │ ├── ZipFile.java │ │ │ │ │ ├── ZipLong.java │ │ │ │ │ ├── ZipManager.java │ │ │ │ │ ├── ZipOutputStream.java │ │ │ │ │ ├── ZipShort.java │ │ │ │ │ ├── ZipUtil.java │ │ │ │ │ ├── encoding │ │ │ │ │ ├── DetectEncoding.java │ │ │ │ │ ├── FallbackZipEncoding.java │ │ │ │ │ ├── ZipEncoding.java │ │ │ │ │ └── ZipEncodingHelper.java │ │ │ │ │ └── extrafield │ │ │ │ │ ├── AbstractUnicodeExtraField.java │ │ │ │ │ ├── AsiExtraField.java │ │ │ │ │ ├── CentralDirectoryParsingZipExtraField.java │ │ │ │ │ ├── ExtraFieldUtils.java │ │ │ │ │ ├── UnicodeCommentExtraField.java │ │ │ │ │ ├── UnicodePathExtraField.java │ │ │ │ │ ├── UnparseableExtraFieldData.java │ │ │ │ │ ├── UnrecognizedExtraField.java │ │ │ │ │ └── ZipExtraField.java │ │ │ └── net │ │ │ │ └── fornwall │ │ │ │ └── apksigner │ │ │ │ ├── Base64.java │ │ │ │ ├── CertCreator.java │ │ │ │ ├── JKS.java │ │ │ │ ├── KeySet.java │ │ │ │ ├── KeyStoreFileManager.java │ │ │ │ ├── LoadKeystoreException.java │ │ │ │ ├── Main.java │ │ │ │ ├── SignatureBlockGenerator.java │ │ │ │ ├── ZipSigner.java │ │ │ │ └── zipio │ │ │ │ ├── CentralEnd.java │ │ │ │ ├── ZioEntry.java │ │ │ │ ├── ZioEntryInputStream.java │ │ │ │ ├── ZioEntryOutputStream.java │ │ │ │ ├── ZipInput.java │ │ │ │ └── ZipOutput.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── AppUtils.cpp │ │ │ ├── Application.mk │ │ │ ├── ComUtils.cpp │ │ │ ├── Main.cpp │ │ │ ├── RegMethod.cpp │ │ │ ├── UiUtils.cpp │ │ │ ├── XposedCheck.cpp │ │ │ ├── md5.c │ │ │ └── md5.h │ │ │ └── res │ │ │ ├── drawable │ │ │ ├── bg_dialog_loading.xml │ │ │ └── ic_launcher.png │ │ │ ├── layout │ │ │ ├── activity_create_keystore.xml │ │ │ ├── activity_err_report.xml │ │ │ ├── activity_example.xml │ │ │ ├── activity_forget_pass.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_opensourcelist.xml │ │ │ ├── activity_settings.xml │ │ │ ├── activity_signup.xml │ │ │ ├── dialog_keyinfo.xml │ │ │ ├── dialog_progress.xml │ │ │ ├── fragment_add_shell.xml │ │ │ ├── fragment_encrypt_resources.xml │ │ │ ├── fragment_encrypt_string.xml │ │ │ ├── item_app_bar.xml │ │ │ ├── item_file.xml │ │ │ ├── item_loading.xml │ │ │ ├── item_opensource.xml │ │ │ ├── item_pkg.xml │ │ │ ├── item_tree.xml │ │ │ ├── nav_header_main.xml │ │ │ ├── view_about.xml │ │ │ ├── view_activate_key.xml │ │ │ ├── view_pkg_selector.xml │ │ │ ├── view_select_file.xml │ │ │ ├── view_signup_verify_code.xml │ │ │ ├── view_tree_pkg_selector.xml │ │ │ └── view_user_info.xml │ │ │ ├── menu │ │ │ ├── activity_main_drawer.xml │ │ │ └── navigation.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_about.png │ │ │ ├── ic_add_shell.png │ │ │ ├── ic_arrow_left.png │ │ │ ├── ic_arrow_right.png │ │ │ ├── ic_back.png │ │ │ ├── ic_encrypt_res.png │ │ │ ├── ic_encrypt_string.png │ │ │ ├── ic_failure.png │ │ │ ├── ic_file.png │ │ │ ├── ic_finish.png │ │ │ ├── ic_keystore.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── ic_menu.png │ │ │ ├── ic_refresh.png │ │ │ ├── ic_settings.png │ │ │ └── ic_up.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_apk.png │ │ │ ├── ic_clazz.png │ │ │ ├── ic_file.png │ │ │ ├── ic_folder.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── ic_unable_png.png │ │ │ └── ic_zip.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values-en │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ ├── file_paths.xml │ │ │ ├── network_security_config.xml │ │ │ └── preferences_settings.xml │ └── version.properties ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── APKEncryptor-Server ├── .idea │ ├── .gitignore │ ├── artifacts │ │ └── APKEncryptor_Server_jar.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── misc.xml │ ├── modules.xml │ ├── qaplug_profiles.xml │ └── uiDesigner.xml ├── libs │ ├── activation.jar │ ├── gson-2.8.5.jar │ ├── json.jar │ ├── mail.jar │ ├── mysql-connector-java-5.1.39-bin.jar │ └── zip4j-1.3.2.jar └── src │ ├── META-INF │ └── MANIFEST.MF │ └── cn │ └── beingyi │ └── apkenceyptor │ ├── Main.java │ ├── request │ ├── BaseTask.java │ ├── KeyManager.java │ ├── activateKey.java │ ├── changePassByCode.java │ ├── checkVIP.java │ ├── getPrice.java │ ├── getUserInfo.java │ ├── isAllowSignup.java │ ├── login.java │ ├── sendChangePassCode.java │ ├── sendSignupCode.java │ └── signup.java │ ├── sql │ ├── InitDataBase.java │ ├── code.txt │ ├── feedback.txt │ ├── keys.txt │ └── users.txt │ ├── strings │ ├── Strings.java │ ├── string-en.txt │ ├── string-ru.txt │ └── string-zh.txt │ └── utils │ ├── BES.java │ ├── Conf.java │ ├── Confs.java │ ├── Custom.java │ ├── EmailUtils.java │ ├── FileUtils.java │ ├── JDBCUtils.java │ ├── ListUtil.java │ ├── MD5.java │ ├── ServerBES.java │ ├── TimeUtils.java │ ├── Tools.java │ ├── UserThread.java │ └── UserUtils.java ├── APKEncryptor-Tools ├── .idea │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── misc.xml │ ├── modules.xml │ ├── uiDesigner.xml │ └── workspace.xml ├── libs │ ├── a.jar │ ├── android.jar │ ├── apktool-cli.jar │ ├── bcpkix-jdk15on-1.56.0.0.jar │ ├── commons-cli-1.4.jar │ ├── core-1.56.0.0.jar │ ├── dexlib2.jar │ ├── json.jar │ ├── kxml2-2.3.0.jar │ └── prov-1.56.0.0.jar ├── resource │ ├── BYDecoder.smali │ ├── IntDecoder.smali │ ├── MethodPool.smali │ ├── StringPool.smali │ ├── keys.txt │ └── method.smali └── src │ ├── android │ ├── content │ │ ├── Context.java │ │ └── res │ │ │ └── Resources.java │ ├── graphics │ │ └── Color.java │ ├── text │ │ └── TextUtils.java │ └── util │ │ ├── SparseArray.java │ │ └── TypedValue.java │ ├── com │ ├── beingyi │ │ ├── encrypt │ │ │ ├── BYDecoder.java │ │ │ ├── BYDecoder.smali │ │ │ ├── DexStringEncryptor.java │ │ │ ├── StringPool.java │ │ │ ├── StringPool.smali │ │ │ └── utils │ │ │ │ ├── BES.java │ │ │ │ ├── ByteEncoder.java │ │ │ │ ├── DexUtils.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── IntDecoder.java │ │ │ │ ├── IntDecoder.smali │ │ │ │ └── MD5.java │ │ ├── encryptAPK.java │ │ ├── tasks │ │ │ ├── EncryptApkEncryptor.java │ │ │ ├── IntDecoderSmail.java │ │ │ ├── ResIDEncryptor.java │ │ │ └── WriteOpenSourceList.java │ │ └── tools │ │ │ ├── Main.java │ │ │ └── utils │ │ │ ├── BES.java │ │ │ ├── ByteEncoder.java │ │ │ ├── DexUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── MD5.java │ │ │ ├── ManifestParse.java │ │ │ └── ZipOut.java │ └── bigzhao │ │ └── xml2axml │ │ ├── AXMLPrinter.java │ │ ├── ComplexConsts.java │ │ ├── DefaultReferenceResolver.java │ │ ├── Encoder.java │ │ ├── IntWriter.java │ │ ├── NotImplementedException.java │ │ ├── ReferenceResolver.java │ │ ├── ValueType.java │ │ ├── chunks │ │ ├── AttrChunk.java │ │ ├── Chunk.java │ │ ├── ChunkType.java │ │ ├── EndNameSpaceChunk.java │ │ ├── EndTagChunk.java │ │ ├── ResourceMapChunk.java │ │ ├── StartNameSpaceChunk.java │ │ ├── StartTagChunk.java │ │ ├── StringPoolChunk.java │ │ ├── TagChunk.java │ │ ├── ValueChunk.java │ │ └── XmlChunk.java │ │ └── tools │ │ ├── AxmlDecoder.java │ │ └── AxmlEncoder.java │ ├── maobyte │ ├── io │ │ ├── ZInput.java │ │ └── ZOutput.java │ ├── util │ │ └── StringDecoder.java │ └── xml │ │ └── decode │ │ ├── AXmlDecoder.java │ │ ├── AXmlResourceParser.java │ │ └── XmlPullParser.java │ └── net │ └── fornwall │ └── apksigner │ ├── Base64.java │ ├── CertCreator.java │ ├── JKS.java │ ├── KeySet.java │ ├── KeyStoreFileManager.java │ ├── LoadKeystoreException.java │ ├── SignatureBlockGenerator.java │ ├── ZipSigner.java │ └── zipio │ ├── CentralEnd.java │ ├── ZioEntry.java │ ├── ZioEntryInputStream.java │ ├── ZioEntryOutputStream.java │ ├── ZipInput.java │ └── ZipOutput.java ├── KeyCreateor-Andtoid ├── .gitignore ├── .idea │ ├── codeStyles │ │ └── Project.xml │ ├── gradle.xml │ ├── misc.xml │ └── runConfigurations.xml ├── app │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ ├── sun.misc.BASE64Decoder.jar │ │ └── systembartint-1.0.4.jar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── org │ │ │ └── flying │ │ │ └── keycreateor │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── flying │ │ │ │ └── keycreateor │ │ │ │ ├── Interface │ │ │ │ └── SocketCallBack.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MyApp.java │ │ │ │ ├── base │ │ │ │ └── BaseActivity.java │ │ │ │ ├── crash │ │ │ │ └── CrashHandler.java │ │ │ │ ├── ui │ │ │ │ ├── DialogLoading.java │ │ │ │ └── ToastUtils.java │ │ │ │ └── utils │ │ │ │ ├── AES.java │ │ │ │ ├── APKUtils.java │ │ │ │ ├── BES.java │ │ │ │ ├── Conf.java │ │ │ │ ├── Custom.java │ │ │ │ ├── ListUtil.java │ │ │ │ ├── MD5.java │ │ │ │ ├── SPUtils.java │ │ │ │ ├── SelfInfo.java │ │ │ │ ├── SocketUtils.java │ │ │ │ ├── TimeUtils.java │ │ │ │ └── alert.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ ├── bg_dialog_loading.xml │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_cardlist.xml │ │ │ ├── dialog_create_keys.xml │ │ │ ├── dialog_progress.xml │ │ │ └── item_key.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_big_add.png │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── network_security_config.xml │ │ └── test │ │ └── java │ │ └── org │ │ └── flying │ │ └── keycreateor │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── LICENSE ├── README.md ├── SubApplication ├── .gitignore ├── .idea │ ├── caches │ │ ├── build_file_checksums.ser │ │ └── gradle_models.ser │ ├── codeStyles │ │ └── Project.xml │ ├── gradle.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── misc.xml │ └── runConfigurations.xml ├── app │ ├── .gitignore │ ├── CMakeLists.txt │ ├── build.gradle │ ├── libs │ │ └── sun.misc.BASE64Decoder.jar │ ├── proguard-keys.txt │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── cn │ │ │ └── beingyi │ │ │ └── sub │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ ├── cn │ │ │ │ └── beingyi │ │ │ │ │ └── sub │ │ │ │ │ ├── apps │ │ │ │ │ ├── AppUtils │ │ │ │ │ │ └── SubApp │ │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── RefInvoke.java │ │ │ │ │ │ │ └── Utils.java │ │ │ │ │ ├── BaseApplication.java │ │ │ │ │ └── SubApp │ │ │ │ │ │ └── SubApplication.java │ │ │ │ │ ├── classloaders │ │ │ │ │ └── MyDexClassLoader.java │ │ │ │ │ ├── ui │ │ │ │ │ ├── JniAlert.java │ │ │ │ │ ├── ToastUtils.java │ │ │ │ │ └── alert.java │ │ │ │ │ └── utils │ │ │ │ │ ├── ABIUtils.java │ │ │ │ │ ├── APKUtils.java │ │ │ │ │ ├── BYProtectUtils.java │ │ │ │ │ ├── ByteEncoder.java │ │ │ │ │ ├── CheckUtils.java │ │ │ │ │ ├── ContextUtils.java │ │ │ │ │ ├── CrashHandler.java │ │ │ │ │ ├── CustomFun.java │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ ├── Forbidden.java │ │ │ │ │ ├── ListUtil.java │ │ │ │ │ ├── MD5.java │ │ │ │ │ ├── Native.java │ │ │ │ │ ├── SelfInfo.java │ │ │ │ │ └── ZipOut.java │ │ │ ├── com │ │ │ │ └── test │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── alert.java │ │ │ └── io │ │ │ │ └── beingyi │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── Flying.java │ │ │ │ └── Test.java │ │ ├── jni │ │ │ ├── SubApp.cpp │ │ │ └── utils │ │ │ │ ├── AppUtils.cpp │ │ │ │ ├── AppUtils.h │ │ │ │ ├── MD5.cpp │ │ │ │ ├── MD5.h │ │ │ │ ├── RegMethod.cpp │ │ │ │ ├── StringUtil.cpp │ │ │ │ ├── StringUtil.h │ │ │ │ ├── UIUtils.cpp │ │ │ │ ├── XposedCheck.cpp │ │ │ │ └── XposedCheck.h │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── cn │ │ └── beingyi │ │ └── sub │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle └── screenshot.png /APKEncryptor-Android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | -------------------------------------------------------------------------------- /APKEncryptor-Android/.idea/caches/gradle_models.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/.idea/caches/gradle_models.ser -------------------------------------------------------------------------------- /APKEncryptor-Android/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /APKEncryptor-Android/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 29 | 30 | 34 | 35 | -------------------------------------------------------------------------------- /APKEncryptor-Android/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # IntelliJ IDEA 19 | .idea/ 20 | *.iml 21 | *.iws 22 | *.ipr 23 | 24 | # Gradle 25 | .gradle 26 | build/ -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 28 5 | buildToolsVersion '28.0.3' 6 | 7 | defaultConfig { 8 | minSdkVersion 17 9 | targetSdkVersion 28 10 | versionName "1.0" 11 | versionCode 1 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | } 17 | } 18 | } 19 | 20 | dependencies { 21 | implementation fileTree(dir: 'libs', include: ['*.jar']) 22 | //implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' 23 | } 24 | 25 | 26 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | POM_NAME=AndroidTreeView 21 | POM_ARTIFACT_ID=atv 22 | POM_PACKAGING=aar -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/bogdan/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/src/main/java/com/unnamed/b/atv/holder/SimpleViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.unnamed.b.atv.holder; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | 7 | import com.unnamed.b.atv.model.TreeNode; 8 | 9 | /** 10 | * Created by Bogdan Melnychuk on 2/11/15. 11 | */ 12 | public class SimpleViewHolder extends TreeNode.BaseNodeViewHolder { 13 | 14 | public SimpleViewHolder(Context context) { 15 | super(context); 16 | } 17 | 18 | @Override 19 | public View createNodeView(TreeNode node, Object value) { 20 | final TextView tv = new TextView(context); 21 | tv.setText(String.valueOf(value)); 22 | return tv; 23 | } 24 | 25 | @Override 26 | public void toggle(boolean active) { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /APKEncryptor-Android/TreeView/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/antlr-runtime-3.5.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/antlr-runtime-3.5.2.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/apksigner.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/apksigner.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/apktool-cli.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/apktool-cli.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/dexlib2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/dexlib2.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/guava-18.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/guava-18.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/kellinwood-logging-android-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/kellinwood-logging-android-1.4.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/kellinwood-logging-lib-1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/kellinwood-logging-lib-1.1.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/kellinwood-logging-log4j-1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/kellinwood-logging-log4j-1.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/sc-light-jdk15on-1.47.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/sc-light-jdk15on-1.47.0.2.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/scpkix-jdk15on-1.47.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/scpkix-jdk15on-1.47.0.2.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/scprov-jdk15on-1.47.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/scprov-jdk15on-1.47.0.2.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/sun.misc.BASE64Decoder.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/sun.misc.BASE64Decoder.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/systembartint-1.0.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/systembartint-1.0.4.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/zipio-lib-1.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/zipio-lib-1.8.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/zipsigner-lib-1.17.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/zipsigner-lib-1.17.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/libs/zipsigner-lib-optional-1.17.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/libs/zipsigner-lib-optional-1.17.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":228,"versionName":"1.7","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/assets/conf.json: -------------------------------------------------------------------------------- 1 | {"SubApplication":"cn.beingyi.sub.apps.SubApp.SubApplication"} -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/assets/encryptString/MethodPool.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/MethodPool; 2 | .super Ljava/lang/Object; 3 | .source "MethodPool.java" 4 | 5 | 6 | # direct methods 7 | .method public constructor ()V 8 | .registers 1 9 | 10 | .prologue 11 | .line 3 12 | invoke-direct {p0}, Ljava/lang/Object;->()V 13 | 14 | return-void 15 | .end method 16 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/assets/encryptString/StringPool.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/StringPool; 2 | .super Ljava/lang/Object; 3 | 4 | #fields 5 | 6 | 7 | # direct methods 8 | .method static constructor ()V 9 | .registers 1 10 | 11 | .prologue 12 | 13 | #input 14 | 15 | return-void 16 | .end method 17 | 18 | .method public constructor ()V 19 | .registers 1 20 | 21 | .prologue 22 | invoke-direct {p0}, Ljava/lang/Object;->()V 23 | 24 | return-void 25 | .end method 26 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/assets/encryptString/method.smali: -------------------------------------------------------------------------------- 1 | 2 | .method public static #decode()Ljava/lang/String; 3 | .registers 3 4 | 5 | .prologue 6 | const-string v1, "" 7 | 8 | #.local v1, "result":Ljava/lang/String; 9 | const-string v0, "#pass" 10 | 11 | #.local v0, "pass":Ljava/lang/String; 12 | sget-object v2, Lcom/beingyi/encrypt/StringPool;->#field:Ljava/lang/String; 13 | 14 | #.local v2, "text":Ljava/lang/String; 15 | invoke-static {v2, v0}, Lcom/beingyi/encrypt/BYDecoder;->#decode#(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 16 | 17 | move-result-object v1 18 | 19 | return-object v1 20 | .end method 21 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/assets/fly.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/assets/fly.jks -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/beingyi/confuse/Main.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.confuse; 2 | 3 | import java.io.*; 4 | 5 | public class Main { 6 | 7 | public static void main(String[] args) { 8 | Main main=new Main(); 9 | main.start(); 10 | } 11 | 12 | public void start(){ 13 | File workDir=new File("resource"); 14 | File arscFile=new File(workDir,"resources.arsc"); 15 | File outArscFile=new File(workDir,"resources_out.arsc"); 16 | 17 | try { 18 | ArscObfuser arscObfuser=new ArscObfuser(new FileInputStream(arscFile)); 19 | saveFile(outArscFile.getAbsolutePath(),arscObfuser.getData()); 20 | }catch (Exception e){ 21 | e.printStackTrace(); 22 | } 23 | 24 | } 25 | 26 | 27 | public static void saveFile(String filePath,byte[] bfile) throws Exception { 28 | BufferedOutputStream bos = null; 29 | FileOutputStream fos = null; 30 | File file = null; 31 | 32 | File dir = new File(filePath); 33 | if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在 34 | dir.mkdirs(); 35 | } 36 | file = new File(filePath); 37 | fos = new FileOutputStream(file); 38 | bos = new BufferedOutputStream(fos); 39 | bos.write(bfile); 40 | 41 | if (bos != null) { 42 | 43 | bos.close(); 44 | 45 | } 46 | if (fos != null) { 47 | 48 | fos.close(); 49 | 50 | } 51 | 52 | 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/Interface/OpenFileDialogCallBack.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.Interface; 2 | 3 | import android.os.Bundle; 4 | 5 | public interface OpenFileDialogCallBack 6 | { 7 | abstract void callback(Bundle bundle); 8 | } 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/Interface/SocketCallBack.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.Interface; 2 | 3 | public interface SocketCallBack { 4 | 5 | void onStart(); 6 | 7 | void onSuccess(String result); 8 | 9 | void onFailure(String error); 10 | 11 | void onFinished(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/activity/ErrReport.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.activity; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.widget.TextView; 6 | 7 | import com.fly.apkencryptor.R; 8 | import com.fly.apkencryptor.base.BaseActivity; 9 | 10 | public class ErrReport extends BaseActivity { 11 | 12 | TextView tv_err; 13 | 14 | private void init(){ 15 | tv_err=find(R.id.activity_err_report_TextView_text); 16 | } 17 | 18 | @Override 19 | protected void onCreate(Bundle savedInstanceState) { 20 | super.onCreate(savedInstanceState); 21 | setContentView(R.layout.activity_err_report); 22 | init(); 23 | Intent intent=getIntent(); 24 | String err=intent.getStringExtra("err"); 25 | tv_err.setText(err); 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/activity/Example.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.activity; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.fly.apkencryptor.R; 6 | import com.fly.apkencryptor.base.BaseActivity; 7 | 8 | public class Example extends BaseActivity { 9 | 10 | 11 | private void init(){ 12 | 13 | 14 | } 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | setContentView(R.layout.activity_example); 20 | init(); 21 | this.Title=getString(R.string.app_name); 22 | 23 | 24 | } 25 | 26 | 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/activity/Settings.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.activity; 2 | 3 | import android.app.FragmentManager; 4 | import android.app.FragmentTransaction; 5 | import android.content.Context; 6 | import android.os.Bundle; 7 | 8 | import com.fly.apkencryptor.R; 9 | import com.fly.apkencryptor.base.BaseActivity; 10 | import com.fly.apkencryptor.fragment.settings; 11 | import com.fly.apkencryptor.utils.Conf; 12 | import com.fly.apkencryptor.widget.DialogLoading; 13 | 14 | public class Settings extends BaseActivity{ 15 | 16 | 17 | Context context; 18 | Conf conf; 19 | DialogLoading progress; 20 | 21 | 22 | public void init() { 23 | this.context = this; 24 | this.conf = new Conf(context); 25 | progress = new DialogLoading(context, R.style.CustomDialog); 26 | } 27 | 28 | 29 | @Override 30 | protected void onCreate(Bundle savedInstanceState) { 31 | super.onCreate(savedInstanceState); 32 | setContentView(R.layout.activity_settings); 33 | init(); 34 | this.Title=getString(R.string.settings); 35 | 36 | FragmentManager fragmentManager = getFragmentManager(); 37 | FragmentTransaction transaction = fragmentManager.beginTransaction(); 38 | settings fragment = new settings(); 39 | transaction.add(R.id.activity_settings_FrameLayout, fragment); 40 | transaction.commit(); 41 | 42 | 43 | } 44 | 45 | 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/adapter/SectionsPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.adapter; 2 | 3 | import androidx.fragment.app.Fragment; 4 | import androidx.fragment.app.FragmentManager; 5 | import androidx.fragment.app.FragmentPagerAdapter; 6 | 7 | import java.util.List; 8 | 9 | 10 | public class SectionsPagerAdapter extends FragmentPagerAdapter { 11 | List fragments; 12 | 13 | public SectionsPagerAdapter(FragmentManager fm, List fragments) { 14 | super(fm); 15 | this.fragments = fragments; 16 | } 17 | 18 | @Override 19 | public Fragment getItem(int position) { 20 | return fragments.get(position); 21 | } 22 | 23 | @Override 24 | public int getCount() { 25 | return fragments.size(); 26 | } 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/decode/IAXMLSerialize.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.decode; 2 | 3 | import java.io.IOException; 4 | 5 | public interface IAXMLSerialize { 6 | public int getSize(); 7 | public int getType(); 8 | 9 | public void setSize(int size); 10 | public void setType(int type); 11 | 12 | public void read(IntReader reader) throws IOException; 13 | public void write(IntWriter writer) throws IOException; 14 | } 15 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/decode/IVisitable.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.decode; 2 | 3 | public interface IVisitable { 4 | public void accept(IVisitor v); 5 | } 6 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/decode/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.decode; 2 | 3 | public interface IVisitor { 4 | public void visit(BNSNode node); 5 | public void visit(BTagNode node); 6 | public void visit(BTXTNode node); 7 | } 8 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/editor/BaseEditor.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.editor; 2 | 3 | 4 | import com.fly.apkencryptor.axmleditor.decode.AXMLDoc; 5 | import com.fly.apkencryptor.axmleditor.decode.BXMLNode; 6 | import com.fly.apkencryptor.axmleditor.decode.StringBlock; 7 | 8 | /** 9 | * Created by zl on 15/9/8. 10 | */ 11 | public abstract class BaseEditor implements XEditor { 12 | 13 | public BaseEditor(AXMLDoc doc){ 14 | this.doc=doc; 15 | } 16 | 17 | protected AXMLDoc doc; 18 | 19 | protected String attrName; 20 | protected String arrrValue; 21 | 22 | protected int namespace; 23 | 24 | protected int attr_name; 25 | protected int attr_value; 26 | 27 | protected T editorInfo; 28 | 29 | public void setEditorInfo(T editorInfo) { 30 | this.editorInfo = editorInfo; 31 | } 32 | 33 | 34 | @Override 35 | public void setEditor(String attrName, String attrValue) { 36 | this.attrName=attrName; 37 | this.arrrValue=attrValue; 38 | } 39 | 40 | @Override 41 | public void commit() { 42 | if(editorInfo != null) { 43 | registStringBlock(doc.getStringBlock()); 44 | editor(); 45 | } 46 | } 47 | 48 | public abstract String getEditorName(); 49 | 50 | protected abstract void editor(); 51 | 52 | protected abstract BXMLNode findNode(); 53 | 54 | protected abstract void registStringBlock(StringBlock block); 55 | } 56 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/editor/XEditor.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.editor; 2 | 3 | /** 4 | * Created by zl on 15/9/8. 5 | */ 6 | public interface XEditor { 7 | 8 | String NAME_SPACE = "http://schemas.android.com/apk/res/android"; 9 | 10 | String NODE_MANIFEST="manifest"; 11 | String NODE_APPLICATION="application"; 12 | String NODE_METADATA="meta-data"; 13 | 14 | String NODE_USER_PREMISSION ="uses-permission"; 15 | String NODE_SUPPORTS_SCREENS="supports-screens"; 16 | 17 | String NAME = "name"; 18 | String VALUE = "value"; 19 | 20 | void setEditor(String attrName, String attrValue); 21 | 22 | void commit(); 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/utils/CSString.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.utils; 2 | 3 | /** 4 | * @author Dmitry Skiba 5 | * 6 | * Helper class, used in Cast.toCharSequence. 7 | */ 8 | public class CSString implements CharSequence { 9 | 10 | public CSString(String string) { 11 | if (string==null) { 12 | string=""; 13 | } 14 | m_string=string; 15 | } 16 | 17 | public int length() { 18 | return m_string.length(); 19 | } 20 | 21 | public char charAt(int index) { 22 | return m_string.charAt(index); 23 | } 24 | 25 | public CharSequence subSequence(int start,int end) { 26 | return new CSString(m_string.substring(start,end)); 27 | } 28 | 29 | public String toString() { 30 | return m_string; 31 | } 32 | 33 | private String m_string; 34 | } 35 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/utils/Cast.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.utils; 2 | 3 | 4 | /** 5 | * @author Dmitry Skiba 6 | * 7 | */ 8 | public class Cast { 9 | 10 | public static final CharSequence toCharSequence(String string) { 11 | if (string==null) { 12 | return null; 13 | } 14 | return new CSString(string); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/axmleditor/utils/Pair.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.axmleditor.utils; 2 | 3 | public class Pair { 4 | public T1 first; 5 | public T2 second; 6 | 7 | public Pair(T1 t1, T2 t2){ 8 | first = t1; 9 | second = t2; 10 | } 11 | 12 | public Pair(){} 13 | 14 | 15 | public static Pair create(A a, B b) { 16 | return new Pair(a, b); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/bean/FileInfo.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.bean; 2 | 3 | public class FileInfo 4 | { 5 | public String Path=""; 6 | public String Name=""; 7 | public String Entry=""; 8 | public String Time=""; 9 | public String Size=""; 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/task/EncryptString/MyDexBuilder.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.task.EncryptString; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import org.jf.dexlib2.Opcodes; 6 | import org.jf.dexlib2.writer.builder.DexBuilder; 7 | 8 | public class MyDexBuilder extends DexBuilder { 9 | 10 | String tag=""; 11 | 12 | public MyDexBuilder(@NonNull Opcodes opcodes) { 13 | super(opcodes); 14 | } 15 | 16 | public void setTag(String str){ 17 | this.tag=str; 18 | } 19 | 20 | public String getTag(){ 21 | return this.tag; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/update/UpdateInfo.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.update; 2 | 3 | public class UpdateInfo 4 | { 5 | private String version; 6 | private boolean force; 7 | private String url; 8 | private String description; 9 | 10 | 11 | public String getVersion() 12 | { 13 | return version; 14 | } 15 | 16 | public void setVersion(String version) 17 | { 18 | this.version = version; 19 | } 20 | 21 | public boolean getForce(){ 22 | return force; 23 | } 24 | public void setForce(boolean value){ 25 | this.force=value; 26 | } 27 | 28 | public String getUrl() 29 | { 30 | return url; 31 | } 32 | 33 | public void setUrl(String url) 34 | { 35 | this.url = url; 36 | } 37 | 38 | public String getDescription() 39 | { 40 | return description; 41 | } 42 | 43 | public void setDescription(String description) 44 | { 45 | this.description = description; 46 | } 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/update/UpdateInfoParser.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.update; 2 | 3 | import android.util.Xml; 4 | 5 | import org.xmlpull.v1.XmlPullParser; 6 | 7 | import java.io.InputStream; 8 | 9 | public class UpdateInfoParser 10 | { 11 | public static UpdateInfo getUpdateInfo(InputStream is) throws Exception 12 | { 13 | XmlPullParser parser = Xml.newPullParser(); 14 | parser.setInput(is, "utf-8"); 15 | int type = parser.getEventType(); 16 | UpdateInfo info = new UpdateInfo(); 17 | while (type != XmlPullParser.END_DOCUMENT) 18 | { 19 | switch (type) 20 | { 21 | case XmlPullParser.START_TAG: 22 | if ("version".equals(parser.getName())) 23 | { 24 | info.setVersion(parser.nextText()); 25 | } 26 | else if("force".equals(parser.getName())){ 27 | info.setForce(Boolean.parseBoolean(parser.nextText())); 28 | } 29 | else if ("url".equals(parser.getName())) 30 | { 31 | info.setUrl(parser.nextText()); 32 | } 33 | else if ("description".equals(parser.getName())) 34 | { 35 | info.setDescription(parser.nextText()); 36 | } 37 | break; 38 | } 39 | type = parser.next(); 40 | } 41 | return info; 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/Base64Util.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | 4 | import java.io.IOException; 5 | 6 | import Decoder.BASE64Decoder; 7 | import Decoder.BASE64Encoder; 8 | 9 | public class Base64Util { 10 | 11 | 12 | public static String encode(String str){ 13 | 14 | BASE64Encoder encoder = new BASE64Encoder(); 15 | return encoder.encode(str.getBytes()); 16 | 17 | } 18 | 19 | 20 | public static String decode(String str){ 21 | 22 | BASE64Decoder decoder = new BASE64Decoder(); 23 | try { 24 | return new String(decoder.decodeBuffer(str)); 25 | } catch (IOException e) { 26 | e.printStackTrace(); 27 | } 28 | 29 | return ""; 30 | 31 | } 32 | 33 | 34 | 35 | 36 | } 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/Custom.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | public class Custom { 4 | 5 | 6 | public static final int TYPE_LOGIN = 10001; 7 | public static final int TYPE_IS_ALLOW_SIGNUP = 10002; 8 | public static final int TYPE_SIGNUP_SEND_CODE = 10003; 9 | public static final int TYPE_SIGNUP = 10004; 10 | public static final int TYPE_CHANGE_PASS_SEND_CODE = 10005; 11 | public static final int TYPE_CHANGE_PASS_BY_CODE = 10006; 12 | public static final int TYPE_GET_USERINFO = 10007; 13 | public static final int TYPE_GET_PRICE = 10008; 14 | public static final int TYPE_ACTIVATE_KEY = 10009; 15 | public static final int TYPE_CHECK_VIP = 10010; 16 | 17 | 18 | public static final int TYPE_MANAGE_KEY = 9999; 19 | 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/CustomFun.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.os.Process; 4 | 5 | import java.io.IOException; 6 | 7 | public class CustomFun { 8 | 9 | public static void exit(){ 10 | 11 | String exitCmd = "kill " + Process.myPid(); 12 | Runtime runtime = Runtime.getRuntime(); 13 | try { 14 | runtime.exec(exitCmd); 15 | } catch (IOException ignored) { 16 | } 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/DexBuilderUtil.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import org.jf.dexlib2.dexbacked.DexBackedClassDef; 4 | import org.jf.dexlib2.iface.ClassDef; 5 | import org.jf.dexlib2.writer.builder.DexBuilder; 6 | 7 | import java.util.List; 8 | 9 | public class DexBuilderUtil { 10 | 11 | 12 | 13 | public static void MergeDex (DexBuilder builder, List ListDexClassDef, List mClassDef, MergeDexCallback callback) 14 | { 15 | lable1: for ( int i=0;i < ListDexClassDef.size ();i++ ) 16 | { 17 | DexBackedClassDef cl=ListDexClassDef.get (i); 18 | for ( ClassDef def:mClassDef ) 19 | { 20 | if ( def.getType().equals (cl.getType ())) 21 | { 22 | continue lable1; 23 | } 24 | } 25 | builder.internClassDef (cl); 26 | callback.onProgress (i); 27 | } 28 | } 29 | 30 | 31 | 32 | public interface MergeDexCallback 33 | { 34 | void onProgress(int progress); 35 | } 36 | 37 | 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/Ealert.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.content.Context; 4 | import android.content.DialogInterface; 5 | 6 | import com.fly.apkencryptor.BuildConfig; 7 | 8 | import androidx.appcompat.app.AlertDialog; 9 | 10 | public class Ealert 11 | { 12 | 13 | public Ealert(final Context context, final String text) 14 | { 15 | if(!BuildConfig.DEBUG)return; 16 | AlertDialog dialog = new AlertDialog.Builder(context) 17 | 18 | .setTitle("温馨提示") 19 | .setMessage(text) 20 | .setCancelable(false) 21 | 22 | .setPositiveButton("确定", new DialogInterface.OnClickListener() { 23 | @Override 24 | public void onClick(DialogInterface dialog, int which) 25 | { 26 | dialog.dismiss(); 27 | } 28 | }).create(); 29 | dialog.show(); 30 | } 31 | 32 | 33 | 34 | 35 | 36 | } 37 | 38 | 39 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/ExceptionUtils.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import java.io.ByteArrayOutputStream; 4 | import java.io.PrintStream; 5 | import java.io.PrintWriter; 6 | import java.io.StringWriter; 7 | 8 | public class ExceptionUtils { 9 | 10 | 11 | 12 | public static String getExceptionDetail(Exception ex) { 13 | ByteArrayOutputStream out = new ByteArrayOutputStream(); 14 | PrintStream pout = new PrintStream(out); 15 | ex.printStackTrace(pout); 16 | String ret = new String(out.toByteArray()); 17 | pout.close(); 18 | try { 19 | out.close(); 20 | } catch (Exception e) { 21 | } 22 | return ret; 23 | } 24 | 25 | 26 | public static String getDetail(Throwable e){ 27 | StringWriter sw = new StringWriter(); 28 | PrintWriter pw = new PrintWriter(sw, true); 29 | e.printStackTrace(pw); 30 | pw.flush(); 31 | sw.flush(); 32 | return sw.toString(); 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/FActivityInfo.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | 4 | public class FActivityInfo 5 | { 6 | public String name = ""; 7 | public String lable = "", theme = null; 8 | public boolean isMain = false; 9 | 10 | public FActivityInfo() 11 | { 12 | } 13 | public FActivityInfo(String name, String lable, String theme) 14 | { 15 | this.name = name; 16 | this.lable = lable; 17 | this.theme = theme; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/FastFileWriter.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import java.io.BufferedWriter; 4 | import java.io.File; 5 | import java.io.FileWriter; 6 | 7 | public class FastFileWriter { 8 | 9 | File file; 10 | boolean append; 11 | 12 | public FastFileWriter(File file,boolean append)throws Exception{ 13 | this.file=file; 14 | this.append =append; 15 | if(!file.exists()){ 16 | file.createNewFile(); 17 | } 18 | 19 | } 20 | 21 | public void write(String content) throws Exception{ 22 | 23 | FileWriter fileWriter; 24 | BufferedWriter bufferedWriter; 25 | 26 | fileWriter=new FileWriter(file,append); 27 | bufferedWriter=new BufferedWriter(fileWriter); 28 | 29 | bufferedWriter.write(content); 30 | bufferedWriter.flush(); 31 | fileWriter.flush(); 32 | 33 | bufferedWriter.close(); 34 | fileWriter.close(); 35 | 36 | } 37 | 38 | 39 | public File getPath(){ 40 | 41 | return file; 42 | } 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/ImgHelper.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapFactory; 6 | import android.graphics.Canvas; 7 | import android.graphics.PixelFormat; 8 | import android.graphics.drawable.BitmapDrawable; 9 | import android.graphics.drawable.Drawable; 10 | 11 | public class ImgHelper 12 | { 13 | 14 | public static Bitmap getBitmapFormResources(Context context, int resId) 15 | { 16 | return BitmapFactory.decodeResource(context.getResources(), resId); 17 | } 18 | 19 | public static Drawable getDrawableFromResources(Context context, int resId) 20 | { 21 | return context.getResources().getDrawable(resId); 22 | } 23 | 24 | public static Drawable getDrawbleFormBitmap(Context context, Bitmap bitmap) 25 | { 26 | return new BitmapDrawable(context.getResources(), bitmap); 27 | } 28 | 29 | public static Bitmap getBitmapFormDrawable(Context context, Drawable drawable) 30 | { 31 | Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),drawable.getOpacity() != PixelFormat.OPAQUE 32 | ?Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565); 33 | Canvas canvas = new Canvas(bitmap); 34 | drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 35 | //设置绘画的边界,此处表示完整绘制 36 | drawable.draw(canvas); 37 | return bitmap; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/JniAlert.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.content.Context; 4 | 5 | public class JniAlert { 6 | 7 | public JniAlert(){ 8 | 9 | 10 | 11 | } 12 | 13 | 14 | 15 | public void show(Context context,String msg){ 16 | new alert(context,msg); 17 | } 18 | 19 | 20 | public void test(){ 21 | int i=0; 22 | switch (i){ 23 | case 1: 24 | System.out.println(i); 25 | break; 26 | 27 | case 2: 28 | return; 29 | } 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/KeyWordUtils.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.graphics.Color; 4 | import android.text.Editable; 5 | import android.text.SpannableString; 6 | import android.text.Spanned; 7 | import android.text.style.ForegroundColorSpan; 8 | import android.widget.TextView; 9 | 10 | import java.util.regex.Matcher; 11 | import java.util.regex.Pattern; 12 | 13 | public class KeyWordUtils { 14 | 15 | 16 | public static void setHighlight(TextView tv,String str ,String key){ 17 | 18 | //tv.setText(str); 19 | Editable edit=tv.getEditableText(); 20 | SpannableString s = new SpannableString(str); 21 | Pattern p = Pattern.compile(key); 22 | Matcher m = p.matcher(s); 23 | while (m.find()) { 24 | int start = m.start(); 25 | int end = m.end(); 26 | s.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 27 | } 28 | //edit.setSpan(new ForegroundColorSpan(Color.RED), m.start(), m.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 29 | 30 | tv.setText(s); 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/LifeCallBack.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.app.Activity; 4 | import android.app.Application; 5 | import android.os.Bundle; 6 | 7 | public class LifeCallBack implements Application.ActivityLifecycleCallbacks { 8 | 9 | 10 | @Override 11 | public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 12 | //new PayChecker(); 13 | SPUtils.putString("self", "key", Native.getKey()); 14 | } 15 | 16 | @Override 17 | public void onActivityStarted(Activity activity) { 18 | 19 | } 20 | 21 | @Override 22 | public void onActivityResumed(Activity activity) { 23 | 24 | } 25 | 26 | @Override 27 | public void onActivityPaused(Activity activity) { 28 | 29 | } 30 | 31 | @Override 32 | public void onActivityStopped(Activity activity) { 33 | 34 | } 35 | 36 | @Override 37 | public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 38 | 39 | } 40 | 41 | @Override 42 | public void onActivityDestroyed(Activity activity) { 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/MD5.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.text.TextUtils; 4 | import java.security.MessageDigest; 5 | import java.security.NoSuchAlgorithmException; 6 | 7 | public class MD5 8 | { 9 | 10 | public static String encode(String string) { 11 | if (TextUtils.isEmpty(string)) { 12 | return ""; 13 | } 14 | MessageDigest md5 = null; 15 | try { 16 | md5 = MessageDigest.getInstance("MD5"); 17 | byte[] bytes = md5.digest(string.getBytes()); 18 | String result = ""; 19 | for (byte b : bytes) { 20 | String temp = Integer.toHexString(b & 0xff); 21 | if (temp.length() == 1) { 22 | temp = "0" + temp; 23 | } 24 | result += temp; 25 | } 26 | return result.toUpperCase(); 27 | } catch (NoSuchAlgorithmException e) { 28 | e.printStackTrace(); 29 | } 30 | return ""; 31 | } 32 | 33 | public static String encode16(String encryptStr) { 34 | return encode(encryptStr).substring(8, 24).toUpperCase(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/Native.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.content.Context; 4 | 5 | public class Native { 6 | 7 | public static native void init(Context context,String opcode); 8 | public static native void start(Context context); 9 | public static native String getKey(); 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/NativeOpcode.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | public class NativeOpcode { 4 | 5 | //isModifyPkg 6 | public static String Opcode1 = "805af30bbb66cb65accdea8b37890ec3"; 7 | 8 | 9 | } 10 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/PayChecker.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import com.fly.apkencryptor.widget.ToastUtils; 4 | 5 | public class PayChecker { 6 | 7 | public PayChecker(){ 8 | 9 | boolean isPaid=SPUtils.getBoolean("conf","isPaid"); 10 | 11 | switch (isPaid?1:0){ 12 | case 1: 13 | 14 | break; 15 | 16 | case 0: 17 | //ToastUtils.show("This is not offical version.\nPlease downlaod it from Google Play"); 18 | new Thread(){ 19 | @Override 20 | public void run(){ 21 | try { 22 | 23 | Thread.sleep(3000); 24 | //CustomFun.exit(); 25 | } catch (InterruptedException e) { 26 | e.printStackTrace(); 27 | } 28 | } 29 | }.start(); 30 | break; 31 | 32 | } 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/ThreadResult.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | public class ThreadResult { 4 | 5 | 6 | long Allstart; 7 | long Allend; 8 | 9 | public ThreadResult(){ 10 | Allstart = System.currentTimeMillis(); 11 | 12 | } 13 | 14 | public long getUsedTime(){ 15 | Allend = System.currentTimeMillis(); 16 | long total = (Allend - Allstart) / 1000; 17 | return total; 18 | } 19 | 20 | boolean isHasError; 21 | 22 | public void setHasError(boolean value){ 23 | this.isHasError=value; 24 | } 25 | 26 | public boolean getHasError(){ 27 | return this.isHasError; 28 | } 29 | 30 | Exception error; 31 | 32 | public void setError(Exception value){ 33 | this.error=value; 34 | } 35 | 36 | public Exception getError(){ 37 | return this.error; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/UserInfo.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | public class UserInfo { 4 | 5 | public static void setValue(String key,String value){ 6 | SPUtils.putString("info",key,value); 7 | } 8 | 9 | public static String getStrValue(String key){ 10 | return SPUtils.getString("info",key); 11 | } 12 | 13 | public static void setValue(String key,boolean value){ 14 | SPUtils.putBoolean("info",key,value); 15 | } 16 | 17 | public static boolean getBoolValue(String key){ 18 | return SPUtils.getBoolean("info",key); 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/Util.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | 4 | import com.fly.apkencryptor.application.MyApp; 5 | 6 | public class Util 7 | { 8 | public static int dp2px(float dpValue) { 9 | float scale = MyApp.getContext().getResources().getDisplayMetrics().density; 10 | return (int) (dpValue * scale + 0.5f); 11 | 12 | } 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/alert.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | 4 | import android.app.Activity; 5 | import android.content.Context; 6 | import android.content.DialogInterface; 7 | 8 | import androidx.appcompat.app.AlertDialog; 9 | 10 | import com.fly.apkencryptor.R; 11 | 12 | public class alert { 13 | 14 | public alert(final Context context, final String text) { 15 | 16 | ((Activity) context).runOnUiThread(new Runnable() { 17 | @Override 18 | public void run() { 19 | 20 | AlertDialog dialog = new AlertDialog.Builder(context) 21 | 22 | .setTitle(context.getString(R.string.tips)) 23 | .setMessage(text) 24 | .setCancelable(false) 25 | 26 | .setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { 27 | @Override 28 | public void onClick(DialogInterface dialog, int which) { 29 | dialog.dismiss(); 30 | } 31 | }).create(); 32 | dialog.show(); 33 | 34 | 35 | } 36 | }); 37 | 38 | 39 | } 40 | 41 | 42 | } 43 | 44 | 45 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/utils/warn.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.utils; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.Context; 5 | import android.content.DialogInterface; 6 | 7 | public class warn { 8 | 9 | public warn(final Context context, final String text) { 10 | 11 | 12 | AlertDialog dialog = new AlertDialog.Builder(context) 13 | 14 | .setTitle("警告") 15 | .setMessage(text) 16 | .setCancelable(false) 17 | 18 | .setPositiveButton("确定", new DialogInterface.OnClickListener() { 19 | @Override 20 | public void onClick(DialogInterface dialog, int which) { 21 | dialog.dismiss(); 22 | System.exit(0); 23 | } 24 | }) 25 | .setOnDismissListener(new DialogInterface.OnDismissListener() { 26 | @Override 27 | public void onDismiss(DialogInterface dialogInterface) { 28 | System.exit(0); 29 | } 30 | }) 31 | .create(); 32 | dialog.show(); 33 | 34 | } 35 | 36 | 37 | } 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/fly/apkencryptor/widget/ToastUtils.java: -------------------------------------------------------------------------------- 1 | package com.fly.apkencryptor.widget; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | import com.fly.apkencryptor.application.MyApp; 7 | 8 | 9 | public class ToastUtils { 10 | 11 | public static void show(String msg) { 12 | show(msg, Toast.LENGTH_SHORT); 13 | } 14 | 15 | public static void show(Context context,int msg) { 16 | show(context.getString(msg), Toast.LENGTH_SHORT); 17 | } 18 | 19 | public static void showLong(String msg) { 20 | show(msg, Toast.LENGTH_LONG); 21 | } 22 | 23 | 24 | private static void show(String message, int show_length) { 25 | Context context = MyApp.getContext(); 26 | Toast.makeText(context,message,show_length).show(); 27 | } 28 | 29 | 30 | } 31 | 32 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/ARSCCallBack.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2015 com.iyfengHai <2801045898@qq.com> 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * 一个资源解析回调接口 18 | */ 19 | package com.iyfeng.arsceditor.ResDecoder; 20 | 21 | public interface ARSCCallBack { 22 | void back(String config, String type, String key, String value); 23 | } 24 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/GetResValues.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2011 Ryszard Wiśniewski 3 | * Modified Copyright 2015 com.iyfengHai <2801045898@qq.com> 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.iyfeng.arsceditor.ResDecoder; 19 | 20 | import java.io.IOException; 21 | 22 | import com.iyfeng.arsceditor.ResDecoder.data.ResResource; 23 | 24 | 25 | /** 26 | * @author Ryszard Wiśniewski 27 | * @author com.iyfengHai 28 | */ 29 | public interface GetResValues { 30 | public void getResValues(ARSCCallBack back, ResResource res) throws IOException; 31 | } 32 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/ResUnknownFiles.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.iyfeng.arsceditor.ResDecoder.data; 17 | 18 | import java.util.LinkedHashMap; 19 | import java.util.Map; 20 | 21 | /** 22 | * @author Connor Tumbleson 23 | */ 24 | public class ResUnknownFiles { 25 | 26 | private final Map mUnknownFiles = new LinkedHashMap(); 27 | 28 | public void addUnknownFileInfo(String file, String value) { 29 | mUnknownFiles.put(file, value); 30 | } 31 | 32 | public Map getUnknownFiles() { 33 | return mUnknownFiles; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResBoolValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | /** 20 | * @author Ryszard Wiśniewski 21 | */ 22 | public class ResBoolValue extends ResScalarValue { 23 | private final boolean mValue; 24 | 25 | public ResBoolValue(boolean value, int rawIntValue, String rawValue) { 26 | super("bool", rawIntValue, rawValue); 27 | this.mValue = value; 28 | } 29 | 30 | @Override 31 | protected String encodeAsResValue() { 32 | return mValue ? "true" : "false"; 33 | } 34 | 35 | public boolean getValue() { 36 | return mValue; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResColorValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | /** 20 | * @author Ryszard Wiśniewski 21 | */ 22 | public class ResColorValue extends ResIntValue { 23 | public ResColorValue(int value, String rawValue) { 24 | super(value, rawValue, "color"); 25 | } 26 | 27 | @Override 28 | protected String encodeAsResValue() { 29 | return String.format("#%08x", mValue); 30 | } 31 | } -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResDimenValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | 20 | /** 21 | * @author Ryszard Wiśniewski 22 | */ 23 | public class ResDimenValue extends ResIntValue { 24 | public ResDimenValue(int value, String rawValue) { 25 | super(value, rawValue, "dimen"); 26 | } 27 | 28 | @Override 29 | protected String encodeAsResValue() { 30 | return TypedValue.coerceToString(TypedValue.TYPE_DIMENSION, mValue); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResFloatValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | /** 20 | * @author Ryszard Wiśniewski 21 | */ 22 | public class ResFloatValue extends ResScalarValue { 23 | private final float mValue; 24 | 25 | public ResFloatValue(float value, int rawIntValue, String rawValue) { 26 | super("float", rawIntValue, rawValue); 27 | this.mValue = value; 28 | } 29 | 30 | @Override 31 | protected String encodeAsResValue() { 32 | return String.valueOf(mValue); 33 | } 34 | 35 | public float getValue() { 36 | return mValue; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResFractionValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | 20 | /** 21 | * @author Ryszard Wiśniewski 22 | */ 23 | public class ResFractionValue extends ResIntValue { 24 | public ResFractionValue(int value, String rawValue) { 25 | super(value, rawValue, "fraction"); 26 | } 27 | 28 | @Override 29 | protected String encodeAsResValue() { 30 | return TypedValue.coerceToString(TypedValue.TYPE_FRACTION, mValue); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResIdValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | import java.io.IOException; 20 | 21 | import com.iyfeng.arsceditor.ResDecoder.ARSCCallBack; 22 | import com.iyfeng.arsceditor.ResDecoder.GetResValues; 23 | import com.iyfeng.arsceditor.ResDecoder.data.ResResource; 24 | 25 | /** 26 | * @author Ryszard Wiśniewski 27 | */ 28 | public class ResIdValue extends ResValue implements GetResValues { 29 | @Override 30 | public void getResValues(ARSCCallBack back, ResResource res) throws IOException { 31 | back.back(res.getConfig().toString(), res.getResSpec().getType().getName(), res.getResSpec().getName(), 32 | res.getValue().toString()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResIntBasedValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | /** 20 | * @author Matt Mastracci 21 | */ 22 | public class ResIntBasedValue extends ResValue { 23 | private int mRawIntValue; 24 | 25 | protected ResIntBasedValue(int rawIntValue) { 26 | mRawIntValue = rawIntValue; 27 | } 28 | 29 | public int getRawIntValue() { 30 | return mRawIntValue; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResIntValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | import java.io.IOException; 20 | 21 | /** 22 | * @author Ryszard Wiśniewski 23 | */ 24 | public class ResIntValue extends ResScalarValue { 25 | protected final int mValue; 26 | private int type; 27 | 28 | public ResIntValue(int value, String rawValue, int type) { 29 | this(value, rawValue, "integer"); 30 | this.type = type; 31 | } 32 | 33 | public ResIntValue(int value, String rawValue, String type) { 34 | super(type, value, rawValue); 35 | this.mValue = value; 36 | } 37 | 38 | @Override 39 | protected String encodeAsResValue() throws IOException { 40 | return TypedValue.coerceToString(type, mValue); 41 | } 42 | 43 | public int getValue() { 44 | return mValue; 45 | } 46 | } -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResReferenceValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | import java.io.IOException; 20 | 21 | import com.iyfeng.arsceditor.ResDecoder.data.ResPackage; 22 | 23 | /** 24 | * @author Ryszard Wiśniewski 25 | */ 26 | public class ResReferenceValue extends ResIntValue { 27 | public ResReferenceValue(ResPackage package_, int value, String rawValue) { 28 | this(package_, value, rawValue, false); 29 | } 30 | 31 | public ResReferenceValue(ResPackage package_, int value, String rawValue, boolean theme) { 32 | super(value, rawValue, "reference"); 33 | } 34 | 35 | @Override 36 | protected String encodeAsResValue() throws IOException { 37 | return String.valueOf(mValue); 38 | } 39 | 40 | public boolean isNull() { 41 | return mValue == 0; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResStringValue.java: -------------------------------------------------------------------------------- 1 | package com.iyfeng.arsceditor.ResDecoder.data.value; 2 | 3 | public class ResStringValue extends ResScalarValue { 4 | 5 | public ResStringValue(String value, int rawValue) { 6 | this(value, rawValue, "string"); 7 | } 8 | 9 | public ResStringValue(String value, int rawValue, String type) { 10 | super(type, rawValue, value); 11 | } 12 | 13 | @Override 14 | public String encodeAsResValue() { 15 | return mRawValue; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/com/iyfeng/arsceditor/ResDecoder/data/value/ResValue.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2014 Ryszard Wiśniewski 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.iyfeng.arsceditor.ResDecoder.data.value; 18 | 19 | /** 20 | * @author Ryszard Wiśniewski 21 | */ 22 | public class ResValue { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/signer/key/BaseSignatureKey.java: -------------------------------------------------------------------------------- 1 | package maobyte.signer.key; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | 6 | public abstract class BaseSignatureKey { 7 | protected String password; 8 | 9 | protected BaseSignatureKey() { 10 | 11 | } 12 | 13 | public void init() throws Exception { 14 | } 15 | 16 | public void recycle() { 17 | } 18 | 19 | public boolean needPassword() { 20 | return false; 21 | } 22 | 23 | public void setPassword(String password) { 24 | this.password = password; 25 | } 26 | 27 | public String getPassword() { 28 | return password; 29 | } 30 | 31 | public abstract InputStream getPublicKey() throws IOException; 32 | 33 | public abstract InputStream getPrivateKey() throws IOException; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/signer/key/KeystoreKey.java: -------------------------------------------------------------------------------- 1 | package maobyte.signer.key; 2 | 3 | import java.io.ByteArrayInputStream; 4 | import java.io.FileInputStream; 5 | import java.io.InputStream; 6 | import java.security.Key; 7 | import java.security.KeyPair; 8 | import java.security.KeyStore; 9 | import java.security.PrivateKey; 10 | import java.security.cert.Certificate; 11 | import java.util.Base64; 12 | 13 | public class KeystoreKey extends BaseSignatureKey { 14 | private byte[] x509_pem; 15 | private byte[] pk8; 16 | 17 | public KeystoreKey(String file, String password, String alias, String aliasPassword) throws Exception { 18 | KeyStore keyStore = KeyStore.getInstance("jks"); 19 | keyStore.load(new FileInputStream(file), password.toCharArray()); 20 | Certificate pubkey = keyStore.getCertificate(alias); 21 | Key key = keyStore.getKey(alias, aliasPassword.toCharArray()); 22 | KeyPair kp = new KeyPair(pubkey.getPublicKey(), (PrivateKey) key); 23 | x509_pem = ("-----BEGIN CERTIFICATE-----\n" + 24 | Base64.getEncoder().encodeToString(pubkey.getEncoded()) + 25 | "\n-----END CERTIFICATE-----").getBytes(); 26 | pk8 = kp.getPrivate().getEncoded(); 27 | } 28 | 29 | @Override 30 | public InputStream getPublicKey() { 31 | return new ByteArrayInputStream(x509_pem); 32 | } 33 | 34 | @Override 35 | public InputStream getPrivateKey() { 36 | return new ByteArrayInputStream(pk8); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/util/StreamUtil.java: -------------------------------------------------------------------------------- 1 | package maobyte.util; 2 | 3 | import maobyte.zip.ZipFile; 4 | 5 | import java.io.ByteArrayOutputStream; 6 | import java.io.IOException; 7 | import java.io.InputStream; 8 | import java.io.OutputStream; 9 | 10 | public class StreamUtil { 11 | 12 | public static byte[] readBytes(InputStream is) throws IOException { 13 | byte[] buf = new byte[10240]; 14 | int num; 15 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 16 | while ((num = is.read(buf)) != -1) 17 | baos.write(buf, 0, num); 18 | byte[] b = baos.toByteArray(); 19 | baos.close(); 20 | return b; 21 | } 22 | 23 | public static void close(InputStream is) { 24 | if (is != null) 25 | try { 26 | is.close(); 27 | } catch (IOException ignored) { 28 | } 29 | } 30 | 31 | public static void close(OutputStream os) { 32 | if (os != null) 33 | try { 34 | os.close(); 35 | } catch (IOException ignored) { 36 | } 37 | } 38 | 39 | public static void close(ZipFile zip) { 40 | if (zip != null) 41 | try { 42 | zip.close(); 43 | } catch (IOException ignored) { 44 | } 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/zip/CopyEntryCallback.java: -------------------------------------------------------------------------------- 1 | package maobyte.zip; 2 | 3 | public interface CopyEntryCallback { 4 | /** 5 | * @param current 当前zipEntry序号 6 | * @param total ZipEntry总个数 7 | * @return Null不进行复制 否则进行复制 8 | */ 9 | ZipEntry filter(ZipEntry zipEntry, int current, int total); 10 | 11 | /** 12 | * @param current 当前已解压字节数 13 | * @param total 总字节数 14 | */ 15 | void onProgress(long current, long total); 16 | 17 | void done(ZipEntry zipEntry); 18 | } 19 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/zip/ExtractCallback.java: -------------------------------------------------------------------------------- 1 | package maobyte.zip; 2 | 3 | import java.io.File; 4 | 5 | public interface ExtractCallback { 6 | /** 7 | * @param current 当前Entry序号 8 | * @param total 总Entry个数 9 | * @return Null不进行解压 否则进行解压 10 | */ 11 | File filter(ZipEntry zipEntry, int current, int total); 12 | 13 | /** 14 | * @param current 当前文件已解压字节数 15 | * @param total 当前文件总字节数 16 | */ 17 | void onProgress(long current, long total); 18 | 19 | void done(ZipEntry zipEntry, File file); 20 | } 21 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/zip/ZipCallback.java: -------------------------------------------------------------------------------- 1 | package maobyte.zip; 2 | 3 | public interface ZipCallback { 4 | void onProgress(long current, long total); 5 | } 6 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/zip/ZipUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package maobyte.zip; 19 | 20 | /** 21 | * Utility class for handling DOS and Java time conversions. 22 | * 23 | * @since Ant 1.8.1 24 | */ 25 | public abstract class ZipUtil { 26 | /** 27 | * Create a copy of the given array - or return null if the 28 | * argument is null. 29 | */ 30 | public static byte[] copy(byte[] from) { 31 | if (from != null) { 32 | byte[] to = new byte[from.length]; 33 | System.arraycopy(from, 0, to, 0, to.length); 34 | return to; 35 | } 36 | return null; 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/maobyte/zip/encoding/ZipEncodingHelper.java: -------------------------------------------------------------------------------- 1 | package maobyte.zip.encoding; 2 | 3 | public class ZipEncodingHelper { 4 | public static final ZipEncoding UTF8_ZIP_ENCODING = new FallbackZipEncoding("UTF-8"); 5 | 6 | /** 7 | * name of the encoding UTF-8 8 | */ 9 | static final String UTF8 = "UTF8"; 10 | 11 | /** 12 | * variant name of the encoding UTF-8 used for comparisons. 13 | */ 14 | private static final String UTF_DASH_8 = "utf-8"; 15 | 16 | /** 17 | * Whether a given encoding - or the platform's default encoding 18 | * if the parameter is null - is UTF-8. 19 | */ 20 | public static boolean isUTF8(String encoding) { 21 | if (encoding == null) { 22 | // check platform's default encoding 23 | encoding = System.getProperty("file.encoding"); 24 | } 25 | return UTF8.equalsIgnoreCase(encoding) 26 | || UTF_DASH_8.equalsIgnoreCase(encoding); 27 | } 28 | 29 | public static ZipEncoding getZipEncoding(String encoding) { 30 | return new FallbackZipEncoding(encoding); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/net/fornwall/apksigner/Base64.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import org.spongycastle.util.encoders.Base64Encoder; 4 | 5 | import java.io.ByteArrayOutputStream; 6 | import java.io.IOException; 7 | 8 | /** Base64 encoding handling in a portable way across Android and JSE. */ 9 | public class Base64 { 10 | 11 | public static String encode(byte[] data) { 12 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 13 | try { 14 | new Base64Encoder().encode(data, 0, data.length, baos); 15 | } catch (IOException e) { 16 | throw new RuntimeException(e); 17 | } 18 | return new String(baos.toByteArray()); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/net/fornwall/apksigner/KeySet.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import java.security.PrivateKey; 4 | import java.security.cert.X509Certificate; 5 | 6 | public class KeySet { 7 | 8 | /** Certificate. */ 9 | public final X509Certificate publicKey; 10 | /** Private key. */ 11 | public final PrivateKey privateKey; 12 | public final String signatureAlgorithm; 13 | 14 | public KeySet(X509Certificate publicKey, PrivateKey privateKey, String signatureAlgorithm) { 15 | this.publicKey = publicKey; 16 | this.privateKey = privateKey; 17 | this.signatureAlgorithm = (signatureAlgorithm != null) ? signatureAlgorithm : "SHA1withRSA"; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/java/net/fornwall/apksigner/LoadKeystoreException.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import java.io.IOException; 4 | 5 | /** Thrown by JKS.engineLoad() for errors that occur after determining the keystore is actually a JKS keystore. */ 6 | @SuppressWarnings("serial") 7 | public class LoadKeystoreException extends IOException { 8 | 9 | public LoadKeystoreException(String message) { 10 | super(message); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/jni/Android.mk: -------------------------------------------------------------------------------- 1 | 2 | LOCAL_PATH := $(call my-dir) 3 | 4 | include $(CLEAR_VARS) 5 | 6 | LOCAL_CPP_EXTENSION := .cpp .cc .h 7 | LOCAL_MODULE := BY 8 | LOCAL_SRC_FILES := Main.cpp 9 | 10 | 11 | ifeq ($(TARGET_ARCH_ABI),x86) 12 | LOCAL_CFLAGS += -ffast-math -mtune=atom -mssse3 -mfpmath=sse 13 | endif 14 | 15 | LOCAL_CFLAGS:=-fvisibility=hidden 16 | 17 | include $(BUILD_SHARED_LIBRARY) 18 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | 2 | APP_STL := none system c++_static c++_shared; 3 | APP_ABI := armeabi-v7a x86 armeabi x86_64 mips64 mips arm64-v8a 4 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/jni/UiUtils.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | 5 | jobject showToast(JNIEnv *env, jobject thiz, jobject context, jstring str) { 6 | 7 | jclass tclss = env->FindClass("android/widget/Toast"); 8 | jmethodID mid = env->GetStaticMethodID(tclss,"makeText","(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); 9 | jobject job = env->CallStaticObjectMethod(tclss,mid,context,str); 10 | jmethodID showId = env->GetMethodID(tclss,"show","()V"); 11 | env->CallVoidMethod(job,showId,context,str); 12 | 13 | } 14 | 15 | 16 | void show(JNIEnv *env,jobject context,jstring str){ 17 | 18 | jclass alert = env->FindClass("com/fly/apkencryptor/utils/JniAlert"); 19 | jmethodID contruct = env->GetMethodID(alert, "", "()V"); 20 | jobject alertObj=env->NewObject(alert,contruct); 21 | 22 | jmethodID show_id = env->GetMethodID(env->GetObjectClass(alertObj), "show", "(Landroid/content/Context;Ljava/lang/String;)V"); 23 | env->CallVoidMethod(alertObj,show_id,context,str); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/jni/md5.h: -------------------------------------------------------------------------------- 1 | #ifndef MD5_H 2 | #define MD5_H 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | typedef unsigned int UINT4; 9 | 10 | #ifndef PROTOTYPES 11 | #define PROTOTYPES 1 12 | #endif 13 | 14 | typedef unsigned char *POINTER; 15 | 16 | typedef unsigned short int UINT2; 17 | 18 | #if PROTOTYPES 19 | #define PROTO_LIST(list) list 20 | #else 21 | #define PROTO_LIST(list) () 22 | #endif 23 | 24 | typedef struct { 25 | UINT4 state[4]; /* state (ABCD) */ 26 | UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */ 27 | unsigned char buffer[64]; /* input buffer */ 28 | } MD5_CTX; 29 | 30 | void MD5Init PROTO_LIST ((MD5_CTX * )); 31 | 32 | void MD5Update PROTO_LIST 33 | ((MD5_CTX * , 34 | unsigned char *, unsigned int)); 35 | 36 | void MD5Final PROTO_LIST ((unsigned char[16], MD5_CTX *)); 37 | 38 | void md5(const unsigned char *input, unsigned int inputLen, unsigned char *output); 39 | 40 | #ifdef __cplusplus 41 | } 42 | #endif 43 | #endif -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/drawable/bg_dialog_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/activity_err_report.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 16 | 17 | 18 | 22 | 23 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/activity_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/activity_opensourcelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 16 | 17 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/dialog_keyinfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 14 | 15 | 16 | 21 | 22 | 23 | 28 | 29 | 30 | 31 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/dialog_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 22 | 23 | 24 | 25 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/item_app_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 16 | 17 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/item_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 12 | 13 | 17 | 18 | 25 | 26 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/item_pkg.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 20 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/item_tree.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | 28 | 29 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/layout/view_signup_verify_code.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/menu/activity_main_drawer.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 29 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/menu/navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_about.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_add_shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_add_shell.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_arrow_left.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_arrow_right.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_back.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_encrypt_res.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_encrypt_res.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_encrypt_string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_encrypt_string.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_failure.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_file.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_finish.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_keystore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_keystore.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_menu.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_refresh.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_settings.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-hdpi/ic_up.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_apk.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_clazz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_clazz.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_file.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_folder.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_unable_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_unable_png.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxhdpi/ic_zip.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | c语言 5 | java 6 | 7 | 8 | 9 | 10 | 简体中文(Chinese) 11 | English 12 | русский(Russian) 13 | 14 | 15 | 16 | 17 | zh 18 | en 19 | ru 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 16 | 17 | 18 | 21 | 22 | 34 | 35 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/src/main/res/xml/preferences_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /APKEncryptor-Android/app/version.properties: -------------------------------------------------------------------------------- 1 | #Fri Feb 21 14:51:26 CST 2020 2 | versionCode=260 3 | -------------------------------------------------------------------------------- /APKEncryptor-Android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | jcenter() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.6.1' 11 | 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | allprojects { 19 | repositories { 20 | google() 21 | jcenter() 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /APKEncryptor-Android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | -------------------------------------------------------------------------------- /APKEncryptor-Android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /APKEncryptor-Android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 25 20:43:11 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-all.zip 7 | -------------------------------------------------------------------------------- /APKEncryptor-Android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':library-TreeView' 2 | 3 | project(':library-TreeView').projectDir = new File('TreeView') -------------------------------------------------------------------------------- /APKEncryptor-Server/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /../../../../../../:\AllProjects\MessyProjects\APKEncryptor\APKEncryptor-Server\.idea/dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /APKEncryptor-Server/.idea/artifacts/APKEncryptor_Server_jar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/out/artifacts/APKEncryptor_Server_jar 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /APKEncryptor-Server/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/activation.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/activation.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/gson-2.8.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/gson-2.8.5.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/json.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/json.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/mail.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/mail.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/mysql-connector-java-5.1.39-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/mysql-connector-java-5.1.39-bin.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/libs/zip4j-1.3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Server/libs/zip4j-1.3.2.jar -------------------------------------------------------------------------------- /APKEncryptor-Server/src/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: cn.beingyi.apkenceyptor.Main 3 | 4 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/request/BaseTask.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.request; 2 | 3 | import cn.beingyi.apkenceyptor.strings.Strings; 4 | import cn.beingyi.apkenceyptor.utils.UserThread; 5 | import org.json.JSONObject; 6 | 7 | import java.io.IOException; 8 | 9 | public class BaseTask { 10 | 11 | public UserThread userThread; 12 | public JSONObject jsonData; 13 | public JSONObject resultJSON = new JSONObject(); 14 | public int Token=0; 15 | public String IP; 16 | public String language=""; 17 | 18 | public BaseTask(UserThread userThread)throws Exception{ 19 | this.userThread=userThread; 20 | this.jsonData=userThread.jsonData; 21 | if(!userThread.ID.isEmpty()) { 22 | this.Token = Integer.parseInt(userThread.ID); 23 | } 24 | this.IP=userThread.socket.getInetAddress().getHostName(); 25 | this.language=jsonData.optString("language"); 26 | if(language.isEmpty()){ 27 | language="en"; 28 | } 29 | 30 | } 31 | 32 | public String getString(String id){ 33 | return Strings.getString(language,id); 34 | } 35 | 36 | public void writeAndExit(){ 37 | try { 38 | userThread.writeData(resultJSON.toString()); 39 | userThread.closeSocketClient(); 40 | } catch (IOException e) { 41 | e.printStackTrace(); 42 | } 43 | } 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/request/checkVIP.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.request; 2 | 3 | import cn.beingyi.apkenceyptor.utils.MD5; 4 | import cn.beingyi.apkenceyptor.utils.UserThread; 5 | import cn.beingyi.apkenceyptor.utils.UserUtils; 6 | 7 | public class checkVIP extends BaseTask { 8 | public checkVIP(UserThread userThread) throws Exception { 9 | super(userThread); 10 | 11 | int Feature=jsonData.getInt("Feature"); 12 | 13 | if(UserUtils.isVIP(Token)){ 14 | resultJSON.put("result",true); 15 | resultJSON.put("key", MD5.encode("cn.beingyi.apkencryptor-en"));//所有文件解密密码 16 | resultJSON.put("pass", MD5.encode("cn.beingyi.apkencryptor2")); 17 | 18 | 19 | }else { 20 | resultJSON.put("result",false); 21 | resultJSON.put("msg",getString("you_are_not_a_vip_user")); 22 | 23 | } 24 | 25 | 26 | 27 | 28 | writeAndExit(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/request/getPrice.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.request; 2 | 3 | import cn.beingyi.apkenceyptor.utils.Conf; 4 | import cn.beingyi.apkenceyptor.utils.Confs; 5 | import cn.beingyi.apkenceyptor.utils.UserThread; 6 | 7 | public class getPrice extends BaseTask { 8 | public getPrice(UserThread userThread) throws Exception { 9 | super(userThread); 10 | 11 | Confs confs=new Confs(); 12 | 13 | String MonthVipPrice=confs.getValue("MonthVipPrice"); 14 | String SeasonVipPrice=confs.getValue("SeasonVipPrice"); 15 | String YearVipPrice=confs.getValue("YearVipPrice"); 16 | 17 | StringBuilder sb=new StringBuilder(); 18 | sb.append("Price of key:\n"); 19 | sb.append("Month Vip Price:$"+MonthVipPrice+"\n"); 20 | sb.append("Season Vip Price:$"+SeasonVipPrice+"\n"); 21 | sb.append("Year Vip Price:$"+YearVipPrice+"\n"); 22 | 23 | 24 | confs.close(); 25 | 26 | resultJSON.put("BuyKeyUrl","https://t.me/zxcv512"); 27 | resultJSON.put("price",sb.toString()); 28 | resultJSON.put("result",true); 29 | writeAndExit(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/request/isAllowSignup.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.request; 2 | 3 | import cn.beingyi.apkenceyptor.utils.JDBCUtils; 4 | import cn.beingyi.apkenceyptor.utils.MD5; 5 | import cn.beingyi.apkenceyptor.utils.TimeUtils; 6 | import cn.beingyi.apkenceyptor.utils.UserThread; 7 | 8 | import java.sql.Connection; 9 | import java.sql.PreparedStatement; 10 | import java.sql.ResultSet; 11 | 12 | public class isAllowSignup extends BaseTask { 13 | public isAllowSignup(UserThread userThread) throws Exception { 14 | super(userThread); 15 | 16 | String Email=jsonData.getString("Email"); 17 | 18 | 19 | Connection con = JDBCUtils.getConnection(); 20 | String sql = "select * from users where Email =?;"; 21 | PreparedStatement ptmt = con.prepareStatement(sql); 22 | ptmt.setString(1,Email); 23 | ResultSet resultSet = ptmt.executeQuery(); 24 | if(resultSet.next()){ 25 | resultJSON.put("result",false); 26 | resultJSON.put("msg",getString("the_email_you_inputed_already_exists")); 27 | }else { 28 | resultJSON.put("result",true); 29 | } 30 | 31 | writeAndExit(); 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/sql/code.txt: -------------------------------------------------------------------------------- 1 | ID,int(11) 2 | Code,varchar(6) 3 | Email,varchar(32) 4 | isUsed,int(1) default '0' 5 | CreateTime,datetime 6 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/sql/feedback.txt: -------------------------------------------------------------------------------- 1 | ID,int(11) 2 | Content,text 3 | AuthorID,int(11) 4 | CreateTime,datetime -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/sql/keys.txt: -------------------------------------------------------------------------------- 1 | ID,int(11) 2 | Key,varchar(255) 3 | Type,int(1) default '0' 4 | UserID,varchar(16) default '0' 5 | isUsed,int(1) default '0' 6 | Mark,varchar(255) 7 | CreateTime,datetime 8 | ActivateTime,datetime 9 | 10 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/sql/users.txt: -------------------------------------------------------------------------------- 1 | ID,int(11) 2 | Email,varchar(32) 3 | Password,varchar(32) 4 | VIP,date 5 | isLifeTimeVip,int(1) default '0' 6 | isForbidden,int(1) default '0' 7 | LoginTime,datetime 8 | SignupTime,datetime 9 | LoginIP,varchar(255) 10 | SignupIP,varchar(255) 11 | LoginKey,varchar(255) 12 | 13 | 14 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/strings/string-en.txt: -------------------------------------------------------------------------------- 1 | wrong_account_or_password=Wrong account or password 2 | login_successfully=Login successfully 3 | the_email_you_inputed_already_exists=The email you inputed already exists 4 | the_code_is_invalid_or_wrong=The code is invalid or wrong 5 | failed_to_signup=Failed to signup 6 | signup_successfully=Signup successfully 7 | login_failed=Login failed 8 | the_email_you_inputed_is_not_exists=The Email you inputed is not exists 9 | failed_to_send_mail=Failed to send mail 10 | password_modified_successfully=Password modified successfully 11 | failed_to_modify_password=Failed to modify password 12 | the_key_does_not_exist=The key does not exist 13 | key_activated_successfully=Key activated successfully 14 | you_are_not_a_vip_user=You are not a VIP user -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/strings/string-ru.txt: -------------------------------------------------------------------------------- 1 | wrong_account_or_password=неправильно набран номер счёта или пароль 2 | login_successfully=регистрация прошла успешно 3 | the_email_you_inputed_already_exists=введённое сообщение уже существует 4 | the_code_is_invalid_or_wrong=Неверный код или ошибка 5 | failed_to_signup=срыв регистрации 6 | signup_successfully=регистрация прошла успешно 7 | login_failed=Ошибка входа в систему 8 | the_email_you_inputed_is_not_exists=The Email you inputed is not exists 9 | failed_to_send_mail=Failed to send mail 10 | password_modified_successfully=Password modified successfully 11 | failed_to_modify_password=Failed to modify password 12 | the_key_does_not_exist=The key does not exist 13 | key_activated_successfully=Key activated successfully 14 | you_are_not_a_vip_user=You are not a VIP user -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/strings/string-zh.txt: -------------------------------------------------------------------------------- 1 | wrong_account_or_password=账号或密码错误 2 | login_successfully=登录成功 3 | the_email_you_inputed_already_exists=此邮箱已被占用 4 | the_code_is_invalid_or_wrong=验证码错误或者失效 5 | fail_to_signup=注册失败 6 | signup_successfully=注册成功 7 | login_failed=登录失败 8 | the_email_you_inputed_is_not_exists=邮箱不存在 9 | failed_to_send_mail=邮件发送失败 10 | password_modified_successfully=密码修改成功 11 | failed_to_modify_password=密码修改失败 12 | the_key_does_not_exist=卡密不存在 13 | key_activated_successfully=卡密激活成功 14 | you_are_not_a_vip_user=你不是VIP用户 -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/utils/Confs.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.utils; 2 | 3 | public class Confs { 4 | Tools tools; 5 | 6 | public Confs() { 7 | tools=new Tools(); 8 | 9 | } 10 | 11 | public String getValue(String Name){ 12 | return tools.find("confs","Value","Name",Name); 13 | } 14 | 15 | public void setValue(String Name,Object Value){ 16 | tools.update("confs","Value",Value.toString(),"Name",Name); 17 | } 18 | 19 | 20 | public void close(){ 21 | tools.close(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/utils/Custom.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.utils; 2 | 3 | public class Custom { 4 | 5 | 6 | public static final int TYPE_LOGIN = 10001; 7 | public static final int TYPE_IS_ALLOW_SIGNUP = 10002; 8 | public static final int TYPE_SIGNUP_SEND_CODE = 10003; 9 | public static final int TYPE_SIGNUP = 10004; 10 | public static final int TYPE_CHANGE_PASS_SEND_CODE = 10005; 11 | public static final int TYPE_CHANGE_PASS_BY_CODE = 10006; 12 | public static final int TYPE_GET_USERINFO = 10007; 13 | public static final int TYPE_GET_PRICE = 10008; 14 | public static final int TYPE_ACTIVATE_KEY = 10009; 15 | public static final int TYPE_CHECK_VIP = 10010; 16 | 17 | 18 | 19 | 20 | public static final int TYPE_MANAGE_KEY = 9999; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /APKEncryptor-Server/src/cn/beingyi/apkenceyptor/utils/ListUtil.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.apkenceyptor.utils; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class ListUtil { 7 | 8 | 9 | public static String ListToString(List list) { 10 | StringBuilder sb = new StringBuilder(); 11 | for (String s : list) 12 | { 13 | sb.append(","); 14 | sb.append(s); 15 | } 16 | return new String(sb).replaceFirst(",", ""); 17 | } 18 | 19 | 20 | public static List StringToList(String str) { 21 | List list=new ArrayList<>(); 22 | String[] array=str.split(","); 23 | 24 | for(int i=0;i 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/a.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/android.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/android.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/apktool-cli.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/apktool-cli.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/bcpkix-jdk15on-1.56.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/bcpkix-jdk15on-1.56.0.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/commons-cli-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/commons-cli-1.4.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/core-1.56.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/core-1.56.0.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/dexlib2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/dexlib2.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/json.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/json.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/kxml2-2.3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/kxml2-2.3.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/libs/prov-1.56.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/APKEncryptor-Tools/libs/prov-1.56.0.0.jar -------------------------------------------------------------------------------- /APKEncryptor-Tools/resource/IntDecoder.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/utils/IntDecoder; 2 | .super Ljava/lang/Object; 3 | .source "IntDecoder.java" 4 | 5 | 6 | # direct methods 7 | .method public constructor ()V 8 | .registers 1 9 | 10 | .prologue 11 | .line 7 12 | invoke-direct {p0}, Ljava/lang/Object;->()V 13 | 14 | return-void 15 | .end method 16 | 17 | .method public static decode(I)I 18 | .registers 2 19 | .param p0, "value" # I 20 | 21 | .prologue 22 | .line 11 23 | add-int/lit16 v0, p0, -0x3e7 24 | 25 | return v0 26 | .end method 27 | 28 | .method public static encode(I)I 29 | .registers 2 30 | .param p0, "value" # I 31 | 32 | .prologue 33 | .line 15 34 | add-int/lit16 v0, p0, 0x3e7 35 | 36 | return v0 37 | .end method 38 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/resource/MethodPool.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/MethodPool; 2 | .super Ljava/lang/Object; 3 | .source "MethodPool.java" 4 | 5 | 6 | # direct methods 7 | .method public constructor ()V 8 | .registers 1 9 | 10 | .prologue 11 | .line 3 12 | invoke-direct {p0}, Ljava/lang/Object;->()V 13 | 14 | return-void 15 | .end method 16 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/resource/StringPool.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/StringPool; 2 | .super Ljava/lang/Object; 3 | 4 | #fields 5 | 6 | 7 | # direct methods 8 | .method static constructor ()V 9 | .registers 1 10 | 11 | .prologue 12 | 13 | #input 14 | 15 | return-void 16 | .end method 17 | 18 | .method public constructor ()V 19 | .registers 1 20 | 21 | .prologue 22 | invoke-direct {p0}, Ljava/lang/Object;->()V 23 | 24 | return-void 25 | .end method 26 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/resource/method.smali: -------------------------------------------------------------------------------- 1 | 2 | .method public static #decode()Ljava/lang/String; 3 | .registers 3 4 | 5 | .prologue 6 | const-string v1, "" 7 | 8 | #.local v1, "result":Ljava/lang/String; 9 | const-string v0, "#pass" 10 | 11 | #.local v0, "pass":Ljava/lang/String; 12 | sget-object v2, Lcom/beingyi/encrypt/StringPool;->#field:Ljava/lang/String; 13 | 14 | #.local v2, "text":Ljava/lang/String; 15 | invoke-static {v2, v0}, Lcom/beingyi/encrypt/BYDecoder;->#decode#(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 16 | 17 | move-result-object v1 18 | 19 | return-object v1 20 | .end method 21 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/android/content/Context.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.content.res.Resources; 4 | 5 | /** 6 | * Created by Roy on 15-10-6. 7 | */ 8 | public class Context { 9 | private Resources resources=new Resources(); 10 | public Resources getResources() { 11 | return resources; 12 | } 13 | 14 | public String getPackageName() { 15 | return "com.bighzao.xml2axml"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/android/content/res/Resources.java: -------------------------------------------------------------------------------- 1 | package android.content.res; 2 | 3 | import java.lang.reflect.Field; 4 | import java.util.HashMap; 5 | 6 | /** 7 | * Created by Roy on 15-10-6. 8 | */ 9 | public class Resources { 10 | 11 | public HashMap attrMap=new HashMap<>(); 12 | 13 | private void init(){ 14 | try { 15 | Field[] fs = android.R.attr.class.getFields(); 16 | for (Field f : fs) attrMap.put(f.getName(), (Integer)f.get(null)); 17 | }catch (Exception e){ 18 | throw new RuntimeException(e); 19 | } 20 | } 21 | 22 | public Resources(){ 23 | init(); 24 | } 25 | 26 | public int getIdentifier(String name, String type, String pkg) { 27 | if ("android".equals(pkg)&&"attr".equals(type)){ 28 | Integer x=attrMap.get(name); 29 | if (x==null) System.out.println("attr not found: " + name); 30 | else { 31 | System.out.format("@%s:%s/%s=0x%x\n",pkg,type,name,x); 32 | return x; 33 | } 34 | }else{ 35 | System.out.format("@%s:%s/%s=0x%x\n",pkg,type,name,0); 36 | } 37 | return 0; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/android/text/TextUtils.java: -------------------------------------------------------------------------------- 1 | package android.text; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | /** 6 | * Created by Roy on 15-10-6. 7 | */ 8 | public class TextUtils extends StringUtils { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encrypt/StringPool.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.encrypt; 2 | 3 | public class StringPool { 4 | 5 | public static final String s1="fff"; 6 | public static final String s2="fsghff"; 7 | 8 | 9 | } 10 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encrypt/StringPool.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/StringPool; 2 | .super Ljava/lang/Object; 3 | .source "StringPool.java" 4 | 5 | 6 | # static fields 7 | .field public static final s1:Ljava/lang/String; = "fff" 8 | 9 | .field public static final s2:Ljava/lang/String; = "fsghff" 10 | 11 | 12 | # direct methods 13 | .method public constructor ()V 14 | .registers 1 15 | 16 | .prologue 17 | .line 3 18 | invoke-direct {p0}, Ljava/lang/Object;->()V 19 | 20 | return-void 21 | .end method 22 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encrypt/utils/IntDecoder.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.encrypt.utils; 2 | 3 | public class IntDecoder { 4 | 5 | 6 | public static int decode(int value){ 7 | return value-999; 8 | } 9 | 10 | public static String encode(String value){ 11 | 12 | return "0x"+Integer.toHexString(Integer.parseInt(value.replaceFirst("0x",""),16)+999); 13 | } 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encrypt/utils/IntDecoder.smali: -------------------------------------------------------------------------------- 1 | .class public Lcom/beingyi/encrypt/utils/IntDecoder; 2 | .super Ljava/lang/Object; 3 | .source "IntDecoder.java" 4 | 5 | 6 | # direct methods 7 | .method public constructor ()V 8 | .registers 1 9 | 10 | .prologue 11 | .line 7 12 | invoke-direct {p0}, Ljava/lang/Object;->()V 13 | 14 | return-void 15 | .end method 16 | 17 | .method public static decode(I)I 18 | .registers 2 19 | .param p0, "value" # I 20 | 21 | .prologue 22 | .line 11 23 | add-int/lit16 v0, p0, -0x3e7 24 | 25 | return v0 26 | .end method 27 | 28 | .method public static encode(I)I 29 | .registers 2 30 | .param p0, "value" # I 31 | 32 | .prologue 33 | .line 15 34 | add-int/lit16 v0, p0, 0x3e7 35 | 36 | return v0 37 | .end method 38 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encrypt/utils/MD5.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.encrypt.utils; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | public class MD5 7 | { 8 | 9 | 10 | public static String encode(String string) { 11 | MessageDigest md5 = null; 12 | try { 13 | md5 = MessageDigest.getInstance("MD5"); 14 | byte[] bytes = md5.digest(string.getBytes()); 15 | String result = ""; 16 | for (byte b : bytes) { 17 | String temp = Integer.toHexString(b & 0xff); 18 | if (temp.length() == 1) { 19 | temp = "0" + temp; 20 | } 21 | result += temp; 22 | } 23 | return result; 24 | } catch (NoSuchAlgorithmException e) { 25 | e.printStackTrace(); 26 | } 27 | return ""; 28 | } 29 | 30 | public static String encode16(String encryptStr) { 31 | return encode(encryptStr).substring(8, 24); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/encryptAPK.java: -------------------------------------------------------------------------------- 1 | package com.beingyi; 2 | 3 | import com.beingyi.encrypt.DexStringEncryptor; 4 | import com.beingyi.tools.utils.FileUtils; 5 | import com.beingyi.tools.utils.ZipOut; 6 | 7 | import java.io.File; 8 | import java.util.zip.ZipFile; 9 | 10 | public class encryptAPK { 11 | 12 | public static void main(String[] args) { 13 | File assetsDir=new File("E:\\MyData\\AllProjects\\MessyProjects\\APKEncryptor\\APKEncryptor-Android\\app\\src\\main\\assets\\"); 14 | 15 | try { 16 | ZipFile zipFile = new ZipFile(""); 17 | ZipOut zipOut = new ZipOut(assetsDir + "\\sub.apk").setInput(zipFile); 18 | 19 | DexStringEncryptor encryptor = new DexStringEncryptor(FileUtils.toByteArray(zipFile.getInputStream(zipFile.getEntry("classes.dex"))),null); 20 | zipOut.addFile("classes.dex", encryptor.getData()); 21 | zipOut.save(); 22 | 23 | }catch (Exception e){ 24 | e.printStackTrace(); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/tasks/IntDecoderSmail.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.tasks; 2 | 3 | import com.beingyi.encrypt.DexStringEncryptor; 4 | import com.beingyi.encrypt.utils.FileUtils; 5 | import org.antlr.runtime.RecognitionException; 6 | import org.jf.dexlib2.Opcodes; 7 | import org.jf.dexlib2.iface.ClassDef; 8 | import org.jf.dexlib2.writer.builder.DexBuilder; 9 | import org.jf.smali.Smali; 10 | import org.jf.smali.SmaliOptions; 11 | 12 | import java.io.File; 13 | 14 | public class IntDecoderSmail { 15 | 16 | static final String IntDecoder_ClassType_src="Lcom/beingyi/encrypt/utils/IntDecoder;"; 17 | public String IntDecoder_ClassType; 18 | ClassDef classDef; 19 | DexBuilder dexBuilder; 20 | public IntDecoderSmail() throws RecognitionException { 21 | this.dexBuilder=new DexBuilder(Opcodes.getDefault()); 22 | this.dexBuilder.setIgnoreMethodAndFieldError(true); 23 | //this.IntDecoder_ClassType= DexStringEncryptor.getObfusedTypeName(IntDecoder_ClassType_src); 24 | this.IntDecoder_ClassType= IntDecoder_ClassType_src; 25 | this.classDef=Smali.assembleSmaliFile(FileUtils.readFile(new File("resource/IntDecoder.smali").getAbsolutePath()).replace(IntDecoder_ClassType_src,IntDecoder_ClassType), dexBuilder, new SmaliOptions()); 26 | } 27 | 28 | public ClassDef getClassDef(){ 29 | return this.classDef; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/beingyi/tools/utils/MD5.java: -------------------------------------------------------------------------------- 1 | package com.beingyi.tools.utils; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | public class MD5 7 | { 8 | 9 | 10 | public static String encode(String string) { 11 | MessageDigest md5 = null; 12 | try { 13 | md5 = MessageDigest.getInstance("MD5"); 14 | byte[] bytes = md5.digest(string.getBytes()); 15 | String result = ""; 16 | for (byte b : bytes) { 17 | String temp = Integer.toHexString(b & 0xff); 18 | if (temp.length() == 1) { 19 | temp = "0" + temp; 20 | } 21 | result += temp; 22 | } 23 | return result.toUpperCase(); 24 | } catch (NoSuchAlgorithmException e) { 25 | e.printStackTrace(); 26 | } 27 | return ""; 28 | } 29 | 30 | public static String encode16(String encryptStr) { 31 | return encode(encryptStr).substring(8, 24).toUpperCase(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/DefaultReferenceResolver.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml; 2 | 3 | import com.bigzhao.xml2axml.chunks.ValueChunk; 4 | 5 | import java.util.regex.Matcher; 6 | import java.util.regex.Pattern; 7 | 8 | /** 9 | * Created by Roy on 16-4-27. 10 | */ 11 | public class DefaultReferenceResolver implements ReferenceResolver { 12 | static Pattern pat = Pattern.compile("^@\\+?(?:(\\w+):)?(?:(\\w+)/)?(\\w+)$"); 13 | 14 | public int resolve(ValueChunk value, String ref) { 15 | Matcher m=pat.matcher(ref); 16 | if (!m.matches()) throw new RuntimeException("invalid reference"); 17 | String pkg=m.group(1); 18 | String type=m.group(2); 19 | String name=m.group(3); 20 | try { 21 | return Integer.parseInt(name, Encoder.Config.defaultReferenceRadix); 22 | }catch (Exception e){ 23 | e.printStackTrace(); 24 | } 25 | int id=value.getContext().getResources().getIdentifier(name,type,pkg); 26 | return id; 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/NotImplementedException.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml; 2 | 3 | /** 4 | * Created by Roy on 15-10-6. 5 | */ 6 | public class NotImplementedException extends RuntimeException { 7 | } 8 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/ReferenceResolver.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml; 2 | 3 | import com.bigzhao.xml2axml.chunks.ValueChunk; 4 | 5 | /** 6 | * Created by Roy on 15-10-5. 7 | */ 8 | public interface ReferenceResolver { 9 | int resolve(ValueChunk value, String ref); 10 | } 11 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/AttrChunk.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | import com.bigzhao.xml2axml.IntWriter; 4 | import com.bigzhao.xml2axml.ValueType; 5 | 6 | import java.io.IOException; 7 | 8 | /** 9 | * Created by Roy on 15-10-5. 10 | */ 11 | public class AttrChunk extends Chunk{ 12 | private StartTagChunk startTagChunk; 13 | public String prefix; 14 | public String name; 15 | public String namespace; 16 | public String rawValue; 17 | 18 | public AttrChunk(StartTagChunk startTagChunk) { 19 | super(startTagChunk); 20 | this.startTagChunk = startTagChunk; 21 | header.size=20; 22 | } 23 | 24 | 25 | 26 | public ValueChunk value = new ValueChunk(this); 27 | 28 | @Override 29 | public void preWrite() { 30 | value.calc(); 31 | } 32 | 33 | @Override 34 | public void writeEx(IntWriter w) throws IOException { 35 | w.write(startTagChunk.stringIndex(null,namespace)); 36 | w.write(startTagChunk.stringIndex(namespace,name)); 37 | //w.write(-1); 38 | if (value.type== ValueType.STRING) 39 | w.write(startTagChunk.stringIndex(null,rawValue)); 40 | else 41 | w.write(-1); 42 | value.write(w); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/ChunkType.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | enum ChunkType { 4 | Null(0x0000, -1), 5 | StringPool(0x0001, 28), 6 | Table(0x0002, -1), 7 | Xml(0x0003, 8), 8 | 9 | // chunk types in resxmlType 10 | XmlFirstChunk(0x0100, -1), 11 | XmlStartNamespace(0x0100, 0x10), 12 | XmlEndNamespace(0x0101, 0x10), 13 | XmlStartElement(0x0102, 0x10), 14 | XmlEndElement(0x0103, 0x10), 15 | XmlCdata(0x0104, -1), 16 | XmlLastChunk(0x017f, -1), 17 | // this Contains a uint32t array mapping strings in the string 18 | // pool Back to resource identifiers. it is optional. 19 | XmlResourceMap(0x0180, 8), 20 | 21 | // chunk types in restableType 22 | TablePackage(0x0200, -1), 23 | TableType(0x0201, -1), 24 | TableTypeSpec(0x0202, -1); 25 | 26 | public final short type; 27 | public final short headerSize; 28 | 29 | ChunkType(int type, int headerSize) { 30 | this.type = (short)type; 31 | this.headerSize = (short)headerSize; 32 | } 33 | }; 34 | 35 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/EndNameSpaceChunk.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | import com.bigzhao.xml2axml.IntWriter; 4 | 5 | import java.io.IOException; 6 | 7 | /** 8 | * Created by Roy on 15-10-5. 9 | */ 10 | public class EndNameSpaceChunk extends Chunk { 11 | 12 | 13 | 14 | public class H extends Chunk.NodeHeader{ 15 | public H() { 16 | super(ChunkType.XmlEndNamespace); 17 | size=0x18; 18 | } 19 | } 20 | public StartNameSpaceChunk start; 21 | public EndNameSpaceChunk(Chunk parent, StartNameSpaceChunk start) { 22 | super(parent); 23 | this.start=start; 24 | } 25 | @Override 26 | public void writeEx(IntWriter w) throws IOException { 27 | start.writeEx(w); 28 | } 29 | } -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/EndTagChunk.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | import com.bigzhao.xml2axml.IntWriter; 4 | 5 | import java.io.IOException; 6 | 7 | /** 8 | * Created by Roy on 15-10-5. 9 | */ 10 | public class EndTagChunk extends Chunk { 11 | public class H extends Chunk.NodeHeader{ 12 | 13 | public H() { 14 | super(ChunkType.XmlEndElement); 15 | this.size=24; 16 | } 17 | } 18 | 19 | public StartTagChunk start; 20 | public EndTagChunk(Chunk parent, StartTagChunk start) { 21 | super(parent); 22 | this.start=start; 23 | } 24 | 25 | @Override 26 | public void writeEx(IntWriter w) throws IOException { 27 | w.write(stringIndex(null,start.namespace)); 28 | w.write(stringIndex(null,start.name)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/ResourceMapChunk.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | import com.bigzhao.xml2axml.IntWriter; 4 | 5 | import java.io.IOException; 6 | import java.util.LinkedList; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by Roy on 15-10-6. 11 | */ 12 | public class ResourceMapChunk extends Chunk { 13 | 14 | public class H extends Chunk.Header{ 15 | 16 | public H() { 17 | super(ChunkType.XmlResourceMap); 18 | } 19 | 20 | @Override 21 | public void writeEx(IntWriter w) throws IOException { 22 | 23 | } 24 | } 25 | 26 | public ResourceMapChunk(Chunk parent) { 27 | super(parent); 28 | } 29 | 30 | private LinkedList ids; 31 | 32 | @Override 33 | public void preWrite() { 34 | List rss=stringPool().rawStrings; 35 | ids=new LinkedList(); 36 | for (StringPoolChunk.RawString r:rss){ 37 | if (r.origin.id>=0){ 38 | ids.add(r.origin.id); 39 | }else{ 40 | break; 41 | } 42 | } 43 | header.size=ids.size()*4+header.headerSize; 44 | } 45 | 46 | @Override 47 | public void writeEx(IntWriter w) throws IOException { 48 | for (int i:ids) w.write(i); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/chunks/StartNameSpaceChunk.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.chunks; 2 | 3 | import com.bigzhao.xml2axml.IntWriter; 4 | 5 | import java.io.IOException; 6 | 7 | /** 8 | * Created by Roy on 15-10-5. 9 | */ 10 | public class StartNameSpaceChunk extends Chunk { 11 | 12 | public StartNameSpaceChunk(Chunk parent) { 13 | super(parent); 14 | } 15 | 16 | public class H extends Chunk.NodeHeader{ 17 | public H() { 18 | super(ChunkType.XmlStartNamespace); 19 | size=0x18; 20 | } 21 | } 22 | 23 | public String prefix; 24 | public String uri; 25 | 26 | @Override 27 | public void writeEx(IntWriter w) throws IOException { 28 | w.write(stringIndex(null,prefix)); 29 | w.write(stringIndex(null,uri)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/tools/AxmlDecoder.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.tools; 2 | 3 | import com.bigzhao.xml2axml.AXMLPrinter; 4 | import org.apache.commons.io.FileUtils; 5 | import org.apache.commons.io.IOUtils; 6 | 7 | import java.io.*; 8 | 9 | public class AxmlDecoder { 10 | 11 | 12 | public static void decode(String inputPath, String outPutPath) throws Exception { 13 | 14 | AXMLPrinter.out=new PrintStream(new File(outPutPath)); 15 | AXMLPrinter.main(new String[]{inputPath}); 16 | AXMLPrinter.out.close(); 17 | 18 | } 19 | 20 | 21 | 22 | 23 | public static String decode(File file) throws IOException { 24 | return decode(FileUtils.readFileToByteArray(file)); 25 | } 26 | 27 | 28 | public static String decode(byte[] data) { 29 | try(InputStream is=new ByteArrayInputStream(data)) { 30 | ByteArrayOutputStream os = new ByteArrayOutputStream(); 31 | AXMLPrinter.out = new PrintStream(os); 32 | AXMLPrinter.decode(is); 33 | byte[] bs = os.toByteArray(); 34 | IOUtils.closeQuietly(os); 35 | AXMLPrinter.out.close(); 36 | return new String(bs, "UTF-8"); 37 | }catch (Exception e){ 38 | e.printStackTrace(); 39 | return null; 40 | } 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/com/bigzhao/xml2axml/tools/AxmlEncoder.java: -------------------------------------------------------------------------------- 1 | package com.bigzhao.xml2axml.tools; 2 | 3 | import android.content.Context; 4 | import com.bigzhao.xml2axml.Encoder; 5 | import org.apache.commons.io.FileUtils; 6 | 7 | import java.io.File; 8 | 9 | public class AxmlEncoder { 10 | 11 | 12 | public static void encode(String inputPath, String outPutPath) throws Exception { 13 | 14 | Encoder e = new Encoder(); 15 | byte[] bs = e.encodeFile(new Context(), inputPath); 16 | FileUtils.writeByteArrayToFile(new File(outPutPath), bs); 17 | 18 | } 19 | 20 | 21 | 22 | public static byte[] encode(String xml){ 23 | try { 24 | Encoder encoder = new Encoder(); 25 | return encoder.encodeString(null, xml); 26 | }catch (Exception e){ 27 | e.printStackTrace(); 28 | return null; 29 | } 30 | } 31 | 32 | 33 | public static byte[] encode(File file){ 34 | try { 35 | Encoder encoder = new Encoder(); 36 | return encoder.encodeFile(null, file.getAbsolutePath()); 37 | }catch (Exception e){ 38 | e.printStackTrace(); 39 | return null; 40 | } 41 | } 42 | 43 | 44 | 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/net/fornwall/apksigner/Base64.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import java.io.ByteArrayOutputStream; 4 | import java.io.IOException; 5 | 6 | import org.spongycastle.util.encoders.Base64Encoder; 7 | 8 | /** Base64 encoding handling in a portable way across Android and JSE. */ 9 | public class Base64 { 10 | 11 | public static String encode(byte[] data) { 12 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 13 | try { 14 | new Base64Encoder().encode(data, 0, data.length, baos); 15 | } catch (IOException e) { 16 | throw new RuntimeException(e); 17 | } 18 | return new String(baos.toByteArray()); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/net/fornwall/apksigner/KeySet.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import java.security.PrivateKey; 4 | import java.security.cert.X509Certificate; 5 | 6 | public class KeySet { 7 | 8 | /** Certificate. */ 9 | public final X509Certificate publicKey; 10 | /** Private key. */ 11 | public final PrivateKey privateKey; 12 | public final String signatureAlgorithm; 13 | 14 | public KeySet(X509Certificate publicKey, PrivateKey privateKey, String signatureAlgorithm) { 15 | this.publicKey = publicKey; 16 | this.privateKey = privateKey; 17 | this.signatureAlgorithm = (signatureAlgorithm != null) ? signatureAlgorithm : "SHA1withRSA"; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /APKEncryptor-Tools/src/net/fornwall/apksigner/LoadKeystoreException.java: -------------------------------------------------------------------------------- 1 | package net.fornwall.apksigner; 2 | 3 | import java.io.IOException; 4 | 5 | /** Thrown by JKS.engineLoad() for errors that occur after determining the keystore is actually a JKS keystore. */ 6 | @SuppressWarnings("serial") 7 | public class LoadKeystoreException extends IOException { 8 | 9 | public LoadKeystoreException(String message) { 10 | super(message); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/libs/sun.misc.BASE64Decoder.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/libs/sun.misc.BASE64Decoder.jar -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/libs/systembartint-1.0.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/libs/systembartint-1.0.4.jar -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/androidTest/java/org/flying/keycreateor/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("org.flying.keycreateor", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/java/org/flying/keycreateor/Interface/SocketCallBack.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor.Interface; 2 | 3 | public interface SocketCallBack { 4 | 5 | void onStart(); 6 | 7 | void onSuccess(String result); 8 | 9 | void onFailure(String error); 10 | 11 | void onFinished(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/java/org/flying/keycreateor/ui/ToastUtils.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor.ui; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | import org.flying.keycreateor.MyApp; 7 | 8 | 9 | public class ToastUtils { 10 | 11 | public static void show(String msg) { 12 | show(msg, Toast.LENGTH_SHORT); 13 | } 14 | 15 | public static void show(int msg) { 16 | show(MyApp.getContext().getString(msg), Toast.LENGTH_SHORT); 17 | } 18 | 19 | public static void showLong(String msg) { 20 | show(msg, Toast.LENGTH_LONG); 21 | } 22 | 23 | 24 | private static void show(String message, int show_length) { 25 | Context context = MyApp.getContext(); 26 | Toast.makeText(context,message,show_length).show(); 27 | } 28 | 29 | 30 | } 31 | 32 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/java/org/flying/keycreateor/utils/Custom.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor.utils; 2 | 3 | public class Custom { 4 | 5 | 6 | public static final int TYPE_LOGIN = 10001; 7 | public static final int TYPE_IS_ALLOW_SIGNUP = 10002; 8 | public static final int TYPE_SIGNUP_SEND_CODE = 10003; 9 | public static final int TYPE_SIGNUP = 10004; 10 | public static final int TYPE_CHANGE_PASS_SEND_CODE = 10005; 11 | public static final int TYPE_CHANGE_PASS_BY_CODE = 10006; 12 | public static final int TYPE_GET_USERINFO = 10007; 13 | public static final int TYPE_GET_PRICE = 10008; 14 | 15 | 16 | public static final int TYPE_MANAGE_KEY = 9999; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/java/org/flying/keycreateor/utils/MD5.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor.utils; 2 | 3 | import android.text.TextUtils; 4 | 5 | import java.security.MessageDigest; 6 | import java.security.NoSuchAlgorithmException; 7 | 8 | public class MD5 9 | { 10 | 11 | 12 | public static String encode(String string) { 13 | if (TextUtils.isEmpty(string)) { 14 | return ""; 15 | } 16 | MessageDigest md5 = null; 17 | try { 18 | md5 = MessageDigest.getInstance("MD5"); 19 | byte[] bytes = md5.digest(string.getBytes()); 20 | String result = ""; 21 | for (byte b : bytes) { 22 | String temp = Integer.toHexString(b & 0xff); 23 | if (temp.length() == 1) { 24 | temp = "0" + temp; 25 | } 26 | result += temp; 27 | } 28 | return result; 29 | } catch (NoSuchAlgorithmException e) { 30 | e.printStackTrace(); 31 | } 32 | return ""; 33 | } 34 | 35 | public static String encode16(String encryptStr) { 36 | return encode(encryptStr).substring(8, 24).toUpperCase(); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/java/org/flying/keycreateor/utils/alert.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor.utils; 2 | 3 | 4 | import android.app.Activity; 5 | import android.content.Context; 6 | import android.content.DialogInterface; 7 | 8 | import androidx.appcompat.app.AlertDialog; 9 | 10 | 11 | public class alert { 12 | 13 | public alert(final Context context, final String text) { 14 | 15 | ((Activity) context).runOnUiThread(new Runnable() { 16 | @Override 17 | public void run() { 18 | 19 | AlertDialog dialog = new AlertDialog.Builder(context) 20 | 21 | .setTitle("温馨提示") 22 | .setMessage(text) 23 | .setCancelable(false) 24 | 25 | .setPositiveButton("确定", new DialogInterface.OnClickListener() { 26 | @Override 27 | public void onClick(DialogInterface dialog, int which) { 28 | dialog.dismiss(); 29 | } 30 | }).create(); 31 | dialog.show(); 32 | 33 | 34 | } 35 | }); 36 | 37 | 38 | } 39 | 40 | 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/drawable-v24/bg_dialog_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/layout/dialog_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 22 | 23 | 24 | 25 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_big_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_big_add.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | KeyCreateor-Andtoid 3 | 4 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 17 | 18 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/app/src/test/java/org/flying/keycreateor/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.flying.keycreateor; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.3' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app's APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | 21 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/KeyCreateor-Andtoid/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Feb 19 21:48:16 CST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /KeyCreateor-Andtoid/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name='KeyCreateor-Andtoid' 3 | -------------------------------------------------------------------------------- /SubApplication/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | -------------------------------------------------------------------------------- /SubApplication/.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /SubApplication/.idea/caches/gradle_models.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/.idea/caches/gradle_models.ser -------------------------------------------------------------------------------- /SubApplication/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /SubApplication/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /SubApplication/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /SubApplication/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /SubApplication/app/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | cmake_minimum_required(VERSION 3.4.1) 3 | 4 | add_library( 5 | FlySub 6 | SHARED 7 | 8 | src/main/jni/utils/MD5.cpp 9 | src/main/jni/SubApp.cpp 10 | 11 | 12 | ) 13 | 14 | include_directories(src/main/jni/utils/) 15 | 16 | SET(CMAKE_C_FLAGS$ {CMAKE_C_FLAGS} -fvisibility) 17 | 18 | -------------------------------------------------------------------------------- /SubApplication/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 28 5 | defaultConfig { 6 | applicationId "cn.beingyi.subapplication" 7 | minSdkVersion 14 8 | targetSdkVersion 28 9 | versionCode 1 10 | versionName "1.0" 11 | externalNativeBuild { 12 | cmake { 13 | cppFlags "" 14 | abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'//不同平台so 15 | } 16 | } 17 | } 18 | buildTypes { 19 | release { 20 | minifyEnabled true 21 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 22 | } 23 | debug { 24 | minifyEnabled true 25 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 26 | } 27 | } 28 | 29 | 30 | /** 31 | externalNativeBuild { 32 | ndkBuild { 33 | path file('src/main/jni/Android.mk') 34 | } 35 | }**/ 36 | 37 | sourceSets.main { 38 | jni.srcDirs = [] 39 | jniLibs.srcDirs = ['jniLibs'] 40 | } 41 | 42 | externalNativeBuild { 43 | cmake { 44 | path "CMakeLists.txt" 45 | //version "3.10.2" 46 | } 47 | } 48 | 49 | 50 | lintOptions { 51 | abortOnError false 52 | } 53 | 54 | 55 | 56 | 57 | } 58 | 59 | dependencies { 60 | implementation fileTree(dir: 'libs', include: ['*.jar']) 61 | 62 | } 63 | -------------------------------------------------------------------------------- /SubApplication/app/libs/sun.misc.BASE64Decoder.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/libs/sun.misc.BASE64Decoder.jar -------------------------------------------------------------------------------- /SubApplication/app/src/androidTest/java/cn/beingyi/sub/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.InstrumentationRegistry; 6 | import androidx.test.runner.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getTargetContext(); 24 | 25 | assertEquals("cn.beingyi.subapplication", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/ui/JniAlert.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.ui; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | public class JniAlert { 7 | 8 | public JniAlert(){ 9 | 10 | 11 | 12 | } 13 | 14 | 15 | 16 | public void show(Context context,String msg){ 17 | new alert(context,msg); 18 | } 19 | 20 | 21 | public void test(){ 22 | int i=0; 23 | switch (i){ 24 | case 1: 25 | System.out.println(i); 26 | break; 27 | 28 | case 2: 29 | return; 30 | } 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/ui/ToastUtils.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.ui; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | 7 | 8 | public class ToastUtils { 9 | 10 | public static void show(Context context,String msg) { 11 | show(context,msg, Toast.LENGTH_LONG); 12 | } 13 | 14 | 15 | private static void show(Context context,String message, int show_length) { 16 | Toast.makeText(context,message,show_length).show(); 17 | } 18 | 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/BYProtectUtils.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | 4 | import java.io.ByteArrayOutputStream; 5 | import java.io.FileOutputStream; 6 | import java.io.IOException; 7 | import java.io.InputStream; 8 | import java.io.OutputStream; 9 | 10 | import static cn.beingyi.sub.utils.FileUtils.delSingleFile; 11 | 12 | 13 | public class BYProtectUtils { 14 | 15 | 16 | 17 | public static String getAssetsName(String path){ 18 | 19 | if(path.contains("/")) { 20 | String result=path; 21 | String[] names=path.split("/"); 22 | for(String name:names){ 23 | String md5=MD5.encode(name); 24 | result=result.replace(name,md5); 25 | } 26 | 27 | return result; 28 | }else{ 29 | return MD5.encode(path); 30 | } 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/ContextUtils.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | import android.app.Application; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | public class ContextUtils { 8 | 9 | public static Application getApplication() { 10 | Application application = null; 11 | Class activityThreadClass; 12 | try { 13 | activityThreadClass = Class.forName("android.app.ActivityThread"); 14 | final Method method2 = activityThreadClass.getMethod("currentActivityThread", new Class[0]); 15 | // 得到当前的ActivityThread对象 16 | Object localObject = method2.invoke(null, (Object[]) null); 17 | final Method method = activityThreadClass.getMethod("getApplication"); 18 | application = (Application) method.invoke(localObject, (Object[]) null); 19 | } catch (Exception e) { 20 | e.printStackTrace(); 21 | } 22 | 23 | return application; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/CustomFun.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import android.os.Process; 6 | 7 | public class CustomFun { 8 | 9 | public static void exit(){ 10 | 11 | String exitCmd = "kill " + Process.myPid(); 12 | Runtime runtime = Runtime.getRuntime(); 13 | try { 14 | runtime.exec(exitCmd); 15 | } catch (IOException ignored) { 16 | } 17 | 18 | } 19 | public static void deleteFile(String path){ 20 | String deleteCmd = "rm -r" + path; 21 | Runtime runtime = Runtime.getRuntime(); 22 | try { 23 | runtime.exec(deleteCmd); 24 | } catch (IOException ignored) { 25 | } 26 | } 27 | 28 | public static void deleteFloor(String dir){ 29 | File[] files=new File(dir).listFiles(); 30 | for(File file:files){ 31 | if(file.isFile()){ 32 | deleteFile(file.getAbsolutePath()); 33 | }else{ 34 | deleteFloor(file.getAbsolutePath()); 35 | } 36 | } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/Forbidden.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | public class Forbidden { 4 | public static String l="l."; 5 | } 6 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/MD5.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | import android.text.TextUtils; 4 | import java.security.MessageDigest; 5 | import java.security.NoSuchAlgorithmException; 6 | 7 | public class MD5 8 | { 9 | 10 | public static String encode(String string) { 11 | if (TextUtils.isEmpty(string)) { 12 | return ""; 13 | } 14 | MessageDigest md5 = null; 15 | try { 16 | md5 = MessageDigest.getInstance("MD5"); 17 | byte[] bytes = md5.digest(string.getBytes()); 18 | String result = ""; 19 | for (byte b : bytes) { 20 | String temp = Integer.toHexString(b & 0xff); 21 | if (temp.length() == 1) { 22 | temp = "0" + temp; 23 | } 24 | result += temp; 25 | } 26 | return result.toUpperCase(); 27 | } catch (NoSuchAlgorithmException e) { 28 | e.printStackTrace(); 29 | } 30 | return ""; 31 | } 32 | 33 | public static String encode16(String encryptStr) { 34 | return encode(encryptStr).substring(8, 24).toUpperCase(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/cn/beingyi/sub/utils/Native.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub.utils; 2 | 3 | import android.content.Context; 4 | 5 | public class Native { 6 | 7 | 8 | static { 9 | System.loadLibrary("FlySub"); 10 | } 11 | 12 | public static native String getHead(Context context,String classLoader); 13 | 14 | public static native String getStringKey(Context context); 15 | 16 | public static native String getKey(Context context); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/com/test/alert.java: -------------------------------------------------------------------------------- 1 | package com.test; 2 | 3 | 4 | import android.app.Activity; 5 | import android.app.AlertDialog; 6 | import android.content.Context; 7 | import android.content.DialogInterface; 8 | 9 | public class alert 10 | { 11 | 12 | public alert(final Context context, final String text) 13 | { 14 | 15 | 16 | ((Activity)context).runOnUiThread(new Runnable() { 17 | @Override 18 | public void run() { 19 | 20 | AlertDialog dialog = new AlertDialog.Builder(context) 21 | 22 | .setMessage(text) 23 | .setCancelable(false) 24 | 25 | .setPositiveButton("确定", new DialogInterface.OnClickListener() { 26 | @Override 27 | public void onClick(DialogInterface dialog, int which) 28 | { 29 | dialog.dismiss(); 30 | } 31 | }).create(); 32 | dialog.show(); 33 | 34 | 35 | } 36 | }); 37 | 38 | 39 | 40 | } 41 | 42 | 43 | 44 | } 45 | 46 | 47 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/io/beingyi/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package io.beingyi; 2 | 3 | 4 | import android.app.Activity; 5 | 6 | public class BaseActivity extends Activity { 7 | 8 | 9 | 10 | 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/java/io/beingyi/Flying.java: -------------------------------------------------------------------------------- 1 | package io.beingyi; 2 | 3 | public class Flying { 4 | } 5 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/jni/utils/AppUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Administrator on 2019/11/18. 3 | // 4 | 5 | #ifndef SUBAPPLICATION_APPUTILS_H 6 | #define SUBAPPLICATION_APPUTILS_H 7 | 8 | 9 | class AppUtils { 10 | 11 | }; 12 | 13 | 14 | #endif //SUBAPPLICATION_APPUTILS_H 15 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/jni/utils/StringUtil.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Administrator on 2019/11/18. 3 | // 4 | 5 | #ifndef SUBAPPLICATION_STRINGUTIL_H 6 | #define SUBAPPLICATION_STRINGUTIL_H 7 | 8 | 9 | class StringUtil { 10 | 11 | }; 12 | 13 | 14 | #endif //SUBAPPLICATION_STRINGUTIL_H 15 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/jni/utils/UIUtils.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Administrator on 2019/11/19. 3 | // 4 | 5 | 6 | #include 7 | 8 | 9 | 10 | 11 | 12 | void showToast(JNIEnv *env,jobject context,jstring str){ 13 | jclass jc_Toast= env->FindClass("android/widget/Toast"); 14 | jmethodID jm_makeText=env->GetStaticMethodID(jc_Toast,"makeText","(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); 15 | jobject jo_Toast=env->CallStaticObjectMethod(jc_Toast,jm_makeText,context,str,0); 16 | jmethodID jm_Show=env->GetMethodID(jc_Toast,"show","()V"); 17 | env->CallVoidMethod(jo_Toast,jm_Show); 18 | 19 | } 20 | 21 | 22 | 23 | void show(JNIEnv *env,jobject context,jstring str){ 24 | 25 | jclass alert = env->FindClass("cn/beingyi/sub/ui/JniAlert"); 26 | jmethodID contruct = env->GetMethodID(alert, "", "()V"); 27 | jobject alertObj=env->NewObject(alert,contruct); 28 | 29 | jmethodID show_id = env->GetMethodID(env->GetObjectClass(alertObj), "show", "(Landroid/content/Context;Ljava/lang/String;)V"); 30 | env->CallVoidMethod(alertObj,show_id,context,str); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/jni/utils/XposedCheck.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Administrator on 2019/11/18. 3 | // 4 | 5 | #ifndef SUBAPPLICATION_XPOSEDCHECK_H 6 | #define SUBAPPLICATION_XPOSEDCHECK_H 7 | 8 | 9 | class XposedCheck { 10 | 11 | 12 | 13 | }; 14 | 15 | 16 | #endif //SUBAPPLICATION_XPOSEDCHECK_H 17 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | SubApplication 3 | 4 | -------------------------------------------------------------------------------- /SubApplication/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SubApplication/app/src/test/java/cn/beingyi/sub/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package cn.beingyi.sub; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /SubApplication/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | jcenter() 8 | maven { url 'https://jitpack.io' } 9 | } 10 | dependencies { 11 | classpath 'com.android.tools.build:gradle:3.5.3' 12 | 13 | 14 | // NOTE: Do not place your application dependencies here; they belong 15 | // in the individual module build.gradle files 16 | } 17 | } 18 | 19 | allprojects { 20 | repositories { 21 | google() 22 | jcenter() 23 | maven { url 'https://jitpack.io' } 24 | } 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /SubApplication/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | -------------------------------------------------------------------------------- /SubApplication/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/SubApplication/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /SubApplication/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 25 20:43:11 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /SubApplication/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingYu-Z/ApkEncryptor/f7ddf3a8a2a6be0988726073b9dfe9b347611b92/screenshot.png --------------------------------------------------------------------------------