相关疑难解决方法(0)

什么是Android中的.dex文件?

我有一些关于dex文件的问题

  • dexAndroid中的文件是什么?
  • dex如何为Android工作?
  • 它们如何用于调试Android应用程序?
  • 它们与java类文件类似吗?

我需要具体的信息请帮忙,欢迎任何真实的例子!

android dex

181
推荐指数
3
解决办法
14万
查看次数

在APK上反编译.smali文件

我下载了APK Manager,让我解压APK文件.

但它只解包它并且不会将.smali文件反编译为.java.

是否可以将.smali反编译为.java?

java android apk smali

120
推荐指数
3
解决办法
20万
查看次数

是否可以反编译Android .apk文件?

用户是否能够将我的应用程序的apk文件转换回实际代码?如果他们这样做 - 有什么办法可以阻止这种情况吗?

obfuscation android decompiling apk dex

83
推荐指数
2
解决办法
10万
查看次数

如何使用DEXtoJar

我找到了将文件dex反编译为jar的解决方案来自此链接http://code.google.com/p/dex2jar/downloads/list但我不明白如何使用它.

decompiler

60
推荐指数
5
解决办法
18万
查看次数

是否真的不可能保护Android应用免受逆向工程的影响?

众所周知,Android应用程序是用Java编写的.在Java中,无论你做什么,都不可能保护编译代码免受反编译或反向工程,如Stack Overflow问题如何锁定已编译的Java类以防止反编译?提示.

如何保护包含逆向工程的算法商业秘密的应用程序?

"如何"我不仅指软件技术,还指其他创造性方法.

java android decompiling reverse-engineering

59
推荐指数
4
解决办法
3万
查看次数

没有在路径上找到类"android.support.multidex.MultiDexApplication":DexPathList

我正在我的应用程序上尝试新的MultiDex支持,到目前为止我已经设法正确编译我的应用程序,但在运行它时,我得到以下异常:

java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me..main-2, /vendor/lib, /system/lib]]
    at android.app.LoadedApk.makeApplication(LoadedApk.java:507)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4382)
    at android.app.ActivityThread.access$1500(ActivityThread.java:139)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5086)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: DexPathList[[zip file "/data/app/me.myapp.main-2.apk"],nativeLibraryDirectories=[/data/app-lib/me.myapp.main-2, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    at android.app.Instrumentation.newApplication(Instrumentation.java:998)
    at android.app.LoadedApk.makeApplication(LoadedApk.java:502)
Run Code Online (Sandbox Code Playgroud)

这是我的gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion …
Run Code Online (Sandbox Code Playgroud)

android gradle dex android-multidex

50
推荐指数
6
解决办法
5万
查看次数

保护字符串不变以防逆向工程

我有Android应用程序,它具有硬编码(静态字符串常量)凭据(用户/通行证),用于通过SMTP发送电子邮件.

问题是.apk中的.dex文件可以很容易地进行逆向工程,每个人都可以看到我的密码.

有没有办法如何保护这些凭据,而我仍然可以在我的课程中使用它们?

java security android reverse-engineering credentials

23
推荐指数
3
解决办法
1万
查看次数

如何在Android中以编程方式反编译dex文件?

我知道如何使用基于Windows的系统将apk文件解压缩到类中,如下所示:

第1步:重命名.apk文件

使用扩展名.zip重命名.apk文件(例如,让文件为"demofile.apk",然后在重命名后变为"demofile.apk.zip")

第2步:从apk获取java文件

现在解压缩特定文件夹中的重命名的zip文件,例如,让该文件夹为"demofolder".现在从windows的链接下载dex2jar并将该zip文件解压缩到"demofolder"文件夹中.

现在打开命令提示符并转到上一步创建的文件夹并输入命令"dex2jar classes.dex"并按Enter键.这将在同一文件夹中生成"classes.dex.dex2jar"文件.

现在从链接下载java反编译器并解压缩并启动(双击)jd-gui.exe

从jd-gui窗口浏览demofolder中生成的"classes.dex.dex2jar"文件,这将通过src名称给出所有类文件.

现在从File菜单中选择"save all sources",这将生成一个名为"classes_dex2jar.src.zip"的zip文件,其中包含所有包和java文件.

解压缩该zip文件(classes_dex2jar.src.zip),您将获得该应用程序的所有java文件.

以上步骤将生成java文件,但要获取xml文件执行以下步骤.

第3步:从apk获取xml文件

从链接下载apktool和apktool安装并解压缩两个文件并将其放在同一个文件夹中(例如"demoxmlfolder").

将.apk文件放在同一个文件夹中(即demoxmlfolder)

现在打开命令提示符并转到存储apktool的目录(这里是"demoxmlfolder")并输入命令"apktool if framework-res.apk"上面的命令应该导致"Framework installed ..."现在在命令提示符下键入命令"apktool d filename.apk"(其中filename是apk文件的名称)这将在当前目录(此处为demoxmlfolder)中生成名称filename的文件夹,其中所有xml文件将存储在res\layout文件夹中.

但我想知道如何在Android中编程方式完成上述操作.所以我的android应用程序可以简单地提取另一个应用程序的dex文件.我不介意dex文件是否被复制到手机上的其他地方,然后反编译(这只是我坚持的反编译)

根据以下原则,我可以访问每个应用程序的dex,而不知道如何在Android中对其进行反编译.

任何帮助都会很棒.

final PackageManager pm = getPackageManager();
                PackageInfo packageInfo = null;
                try {
                    packageInfo = pm.getPackageInfo("PACKAGE NAME HERE", PackageManager.GET_META_DATA);
                } catch (NameNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                File file = new File(packageInfo.applicationInfo.sourceDir);
                Uri uri = Uri.fromFile(file);
Run Code Online (Sandbox Code Playgroud)

java xml android android-layout android-activity

15
推荐指数
1
解决办法
3086
查看次数

Android:数据库与应用程序打包的安全性如何

我想知道用android中的应用程序打包数据库是多么安全.用户可以轻松访问数据库吗?由于我拥有的数据库将拥有数据,我不想被用户滥用而被滥用,在移动应用程序中保护数据库的最佳方法是什么?

我的应用程序也将使用Web服务(联系我自己的网站),例如http:\ www.mysite.com/services/xxx

我的网站会将一些数据返回给移动应用.如果有人反编译java代码(在apk中),他将很容易访问我用于Web服务的URL.如何保护我的网站数据免受恶意用户的攻击.如果有人知道URL,他只需在浏览器中键入该URL并获取json格式的所有数据,这是我不想要的,因为这些数据可能非常敏感.即使我保持编码,用户也可以从java代码(他在反编译apk后获得)中了解编码.

如何保护我的数据库不被滥用?

如果我的应用程序要在移动设备上显示诸如餐馆,酒吧等本地地点,我应该总是使用网络服务从网站上获取它们,或者提供具有这些详细信息的本地数据库,以便可以快速获取信息.在这种情况下,我可以提供UPDATE Web服务,它将更新本地数据库.但是本地数据库的安全性对我来说非常重要.

任何人都可以建议在哪里保留数据库以及如何保护它?

Rgds,Sapan

database sqlite android

10
推荐指数
1
解决办法
3524
查看次数

Android检测盗版/破解应用

在iPhone上有几种方法可以检测用户何时打开盗版应用程序的版本.

有没有办法在Android上检测用户何时使用您的应用程序的盗版版本?

android piracy piracy-protection

9
推荐指数
2
解决办法
5205
查看次数