build.gradle是安全的,不会被反编译?
即使使用proguard,也无法确保代码的编码非常容易. 我需要的是在应用程序中保护"键". build.gradle获得了保证吗?可以分解吗? buildConfigField "String", "Key", "\"1234567890\"" 更新 根据Commonsware的答案,我知道它没有得到保护吗?我还有其他方法可以管理吗? 解决方案 是构建. build.gradle未包装到APK中. 您在问题中拥有的Android语句的特定gradle是将字段添加到代码生成的Java类中.从代码混淆的角度来看,这与其他任何Java类一样处理.
反编译APK并在android studio中导入
我用在线工具对apk进行了反复编译," http://www.decompileandroid.com/ APK Studio". 分解是可以的,所有.java文件,图像和XML文件都可以. 但是我想在正常项目中将其导入Android Studio. 当我在Android Studio中选择重新安装的项目时,它只是显示项目名称,没有SRC文件,没有XML文件,没有图像. 解决方案 您也可以使用 apktool 对APK进行反编译和重新编译.使用以下步骤进行反编译 apktool d 并编译后 apktool b 当您的APK分解时,它不在确切的源代码表单中.您会看到很多DEX钩子,总的来说,这不是IDE可以识别和导入的确切的Android项目.您可以使用任何普通编辑器读取代码并了解进行更改. 下载链接: https://ibotpeaches.github.io/apktool/
0 2024-02-18
编程技术问答社区
有什么办法可以从APK文件中获得源代码?
我的笔记本电脑上的硬盘驱动器刚刚崩溃,我在过去两个月一直在研究的应用程序中丢失了所有源代码. 我所拥有的是将其发送给朋友的电子邮件中存储的APK文件. 有什么方法可以从此APK文件中提取我的源代码? 解决方案 最简单的方法:使用在线工具 用于解码.APK文件的过程,分步方法: 步骤1: 制作一个新文件夹并通过要解码的.APK文件复制. 现在,将此.APK文件的扩展名重命名为.zip(从filename.apk重命名为filename.zip)并保存.现在您可以访问class.dex文件.在此阶段,您可以看到可抽签,但不能看到.xml和.java文件. 步骤2: 现在,将此.zip文件提取在同一文件夹或新文件夹中. 将class.dex文件移至dex2jar文件夹中. 现在打开命令提示符,然后将目录更改为该文件夹.然后写d2j-dex2jar classes.dex(对于Mac或Ubuntu Write ./d2j-dex2jar.
0 2024-02-17
编程技术问答社区
是否有可能从.apk文件中获得Android.mk或本地源文件?
似乎很容易从.APK文件获取Java源文件.但是,是否可以通过.apk文件,工具或棘手的方法获得 android.mk 源文件? 我正在对Android App本机代码安全性进行研究,以使这些文件对我很重要.谢谢. 解决方案 您无法从APK获取Android.mk,它仅需要构建,因此,它不会存储在那里(除非程序员将其放入RES/文件夹或类似的内容). 应用程序的所有本机代码都存储在APK根的LIB/目录中.它是编译的ARM或X86代码,或两者兼而有之.您可以在libs/architecture_type/lib_name.so中找到它.您可以将代码与objdump或gdb分配.拆卸是一项更艰巨的任务,但是您可以找到一些可能适合您的软件. 编辑:我注意到您似乎担心人们会反向工程您的代码.防止某人对代码进行反向工程的唯一肯定的火灾方法是不首先编写它.但是,您可以做一些事情使人们很难,但是某人坚持得足够多.
0 2024-02-17
编程技术问答社区
安卓系统的代码以及资源的模糊化问题
Google推荐和包装代码混淆.但是,它带来的默认配置似乎很少,并且可以在一定程度上进行反向工程.大多数寻求反向工程师的人并不是真正在寻找详细信息,而是提取逻辑.是否有任何指南可以更有效地配置Proguard? 其次,诸如APKTool之类的工具可以提取清单以及资源文件.而且没有混淆的水平.这些肯定可以揭示几件事.有什么方法可以避免这种情况发生吗? 解决方案 在第一部分中,我建议您检查此问题: Android Game保持被黑客入侵.它不能直接解决前卫,但确实为您提供了一些有关如何减少盗版的想法. 在第二部分中,恐怕不,这是不可能的,因为这些是普通的XML文件.您可以做的是减少资源的使用并直接在Java 中创建逻辑.这将通过三种方式减少代码的暴露: (1)显而易见的是,它显示出易于阅读的XML代码 (2)它创建更长的smali文件,从开始并不容易:考虑smali文件中的变量没有名称,而是数字,并且被重复了几次,从而使它们变得更加困难理解. V1可以首先是文本视
0 2024-02-16
编程技术问答社区
如何在smali函数中返回一个静态结果
.method public c()Ljava/lang/String; .locals 3 const/4 v1, 0x0 const-string v0, "wifi" invoke-virtual {p0, v0}, Lcom/genwen/looltv/start/Appstart;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/net/wifi/WifiManager; if-nez v0, :cond_1 move-object v0, v1 :goto_0 if-eqz v0, :cond_2 invoke-virtual {v0}, Landroid/net/wifi/WifiInfo;->getMacAddress()Ljava/lang/String; move-result-object v
2 2024-02-09
编程技术问答社区
反编译(二进制,NDK)C应用程序与Java应用程序(Dalvik字节码)的比较
好吧, 由于我有兴趣重新设计,所以到目前为止,我花了很多时间在Android重新设计上. 尽管如此,我到了一个点,在那里我遇到了编译的问题,二进制C代码(NDK),我知道,将其反复回到C/C ++比将DEX文件分解回C/C ++是非常困难的java来源或多或少井. 这样做的原因是什么?我的意思是字节码由Dalvik VM执行,如果使用了通常的二进制文件,则直接由真实处理器执行.两者都非常相似,除了一些额外的仿真层,不是吗?我目前没有看到太多差异或此问题的原因. 您是否有任何信息对我有什么信息,为什么将通常的二进制文件(例如ELF或MS EXE)分配给C源? 谢谢. 解决方案 简短的答案是,C/C ++代码中没有任何反思性信息,C/C ++具有Java编译器的内联函数,宏和展开的循环( C/C ++编译器确实如此.也可以如此广泛地优化C/C ++,以至于您所能做的就是将汇编与汇编进行反编译,因为没有提及应用程序自己的功能. (不过会发现对系统功能的引用
0 2024-02-05
编程技术问答社区
安卓smali问题
我目前正在对Smali/" Code obfuscator"进行一些研究,目前我正在尝试与分解的源代码有关.为此,我创建了一个简单的应用程序,并由Smali分解了. 我现在试图了解分解的源代码,以改进和比较稍后使用代码obfuscator之后的安全性(反对反编译).虽然大多数Smali源代码并不困难,但我有时仍会出现图形的格式转换问题. 愿你向我解释,例如以下行.我想它的值应该为五个,但我不确定,这是哪种二进制格式.如何计算0x4014 = 5 ??? const-wide/high16 v0, 0x4014 // 100000000010100 (5 = 101) 附件是此测试功能的完整Java和Smali代码源: Java来源: boolean test(int a, double d) { if (a
0 2024-02-04
编程技术问答社区
如何从google play store反编译一个安卓应用
我想在Google Play商店中使用一个可用的一个Android应用程序. 有人可以向我建议一个在线工具或任何可以帮助我对APK的源代码的APKTool? 预先感谢. 解决方案 安装您需要从PlayStore进行的应用程序. 从Playstore安装APK提取器. 使用该APK提取器应用提取APK. 只需转到此链接 decompiler.com 选择文件并进行上传和反编译.您将获得zip文件. 其他解决方案 我发现Apktool更快,因为您可以在计算机上运行它. 在其他答案中指出的网站的问题在于,在处理倒数请求时,它们在大多数情况下的队列都更长一些. 此外,互联网速度可能是许多国家/地区的限制因素,因为当每个国家都想将大型APK文件分解时,并不是每个人都会获得良好的上传速度. 检查此工具. 安装运行此命令后,将APK文件反复编译. apktool d myfile.apk
6 2024-02-02
编程技术问答社区
为什么远程服务器上的签名验证比设备上的更安全?
安全控制>应用帐单概述指示在远程服务器而不是在应用程序中执行"签名验证"(在Android设备上本地运行): 通过执行签名验证,您可以帮助检测响应 被篡改或欺骗的.你可以 在您的应用程序中执行此签名验证步骤;然而, 如果您的应用程序连接到安全的远程服务器,那么我们 建议您对此进行签名验证 服务器. 但是,如果我在远程服务器上执行签名验证,只期望yes/no或true/false答案,这实际上不是攻击者拦截和修改吗? ,如果来自远程服务器的答案是另一个签名,那么如何在设备上本地验证第二个签名比第一个(市场)签名更安全? 我缺少什么? 更新: @alf正确地指出,如果服务器也负责交付购买的内容,并且在服务器上执行签名验证,那么即使攻击者妥协该应用程序,服务器也不会通过应用内计费购买的内容.这是微不足道的. 我最初未提及的是,我实际上是指服务器不提供任何内容而只是验证签名,以便该应用程序可以决定是否解锁某些功能.在这种情况下,远程服务器签名验证的优点是什么?
6 2024-01-31
编程技术问答社区
APKtools (APK Studio)无法解码rsc文件
我正在用AKP-Studio对APK进行反复编译(它使用APKTool 2.0.0-Beta9),但是在每个APK上,我都会遇到此错误: May 05, 2015 5:38:30 PM brut.androlib.ApkDecoder decode INFO: Using Apktool 2.0.0-Beta9 on com.****-1.apk May 05, 2015 5:38:30 PM brut.androlib.res.AndrolibResources loadMainPkg INFO: Loading resource table... Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:54) at bru
0 2024-01-30
编程技术问答社区
反编译iOS的Objective-C二进制文件
可能的重复: 对应用程序二进制进行统计以返回源代码 我有一个iPhone/iPad应用程序,有点有趣.它使用特殊的内部XML格式为其所做的事情,但是如果没有设备,我将看不到它的工作原理.我想为Android手机重新创建此功能(也许是免费软件和OpenSource),但为此,我想看看阅读部分的工作原理,实际上,我想知道XML格式本身.很难从头开始重新创建(仅使用XML文件),因为它们没有评论,并且名称并没有告诉任何有关其功能的任何内容. 我只想看到的是如何读取文件,特定标签的操作等,因此我可以编写一个转换器来转换iOS输出文件,以便我的目的相同的Android应用程序.是的,我已经检查了市场,没有像我要重新创建的那样应用程序(实际上几乎完全重新创建了,我只需要一个转换器或一个解析器来处理这些iOS特定文件). > 解决方案 iOS App Store的所有应用程序的二进制文件以及库存OS设备的文件系统已加密. 尝试非常有礼貌地编写该应用程序的作者,看看他们是否
0 2024-01-30
编程技术问答社区
如何在Android平台上反编译APK或DEX文件?
是否可以在Android平台上对APK软件包或DEX文件进行反复编译? 有没有可以对APK文件进行反复编译的工具? 解决方案 您需要三个工具到 decompile an APK 文件. dex2jar - 与android .dex和java .class .class .class File apktool "> apktool - 一种逆向工程的工具Android Appk Files jd-gui -java demompiler是分解并分析Java 5"的工具)字节代码和后期版本. 有关更多 how-to-use-use-use-dextojar .希望这对您和所有人都有帮助! :) 其他解决方案 在线APK分解器 http://www.decompileandroid.com/ https://www.decompiler.com/ Windows的APK分解剂应用 http://forum.xda-develicers.com/
2 2024-01-27
编程技术问答社区
反编译一个APK,修改它,然后重新编译
我需要修改现有的APK,修改源然后重新编译. 我可以使用dex2jar或apktool对其进行反复编译,它起作用了 从罐子文件中,我可以获得Java源(使用JD-GUI) 然后我可以修改Java文件 ,但是现在我想知道如何重新编译Java文件并将它们放回JAR文件中! (罐子部分应该很容易,主要问题似乎是如何重新编译Android的Java文件) 我知道另一个解决方案是使用apktool然后修改smali文件,但是当我们要添加很多代码时,它似乎真的很复杂! 我的应用程序是一个基本的heloworld whitout混淆. 解决方案 感谢Chris Jester-Young,我设法使它起作用了! 我认为我设法这样做的方式只能在非常简单的项目上使用: 使用dex2jar我获得了罐子. 使用JD-GUI我将罐子转换回Java文件. 使用apktool,我得到了Android清单和资源文件. 在Eclipse中,我创建了一个与旧项目相
0 2024-01-27
编程技术问答社区
保护安卓应用免受逆向工程影响真的不可能吗?
我们知道,Android应用程序是用Java编写的.在Java中,无论如何保护包含算法商业秘密的应用程序免于反向工程? 由"如何"我的意思不仅是软件技术,而且是其他 creative 方法. 解决方案 对我来说,第一站是用 proguard 已知可以使用针对Android的就像其他人所说的那样,在将其实施分发给客户时,您将永远无法获得100%的算法详细信息安全性.为此,您需要将代码放在服务器上.试图有效地将客户代码的安全性接近100%的安全性,相当于 drm 面对网络中断的脆弱,通常会挫败(合法)用户. Android开发人员博客有一些有用 关于"创意"方法:一些开发人员雇用调试检测技术为防止运行时分析并将其与二进制代码部分的加密相结合(以确定静态分析),但是说实话,一个确定的攻击者可以张开这些,虽然可能会引起合法的用户挫败感,如Windows KB文章所示a href =" http://support.microsoft.com/kb/812759" rel ="
4 2024-01-27
编程技术问答社区
从一个APK文件到一个项目的逆向工程
我意外地从 eclipse "> eclipse apk 我已将其传输到手机的文件.有没有办法扭转将应用程序导出到.APK文件的过程,因此我可以将项目恢复? 解决方案 有两个有用的工具将从未知的APK文件中生成Java代码(粗糙但足够好). 从 dex2jar .. 使用该工具将APK文件转换为 jar jar : Windows: $ d2j-dex2jar.bat demo.apk dex2jar demo.apk -> ./demo-dex2jar.jar macOS/linux: $ d2j-dex2jar.sh -f demo.apk -o demo.jar 生成了JAR文件后,请使用 jd-gui 打开JAR文件.您将看到Java文件. 输出将类似于: 然后,您可以使用其他工具来检索apk文件中的androidManifest.xml和资源文件(例如图像,翻译等). apktool $ java -jar
0 2024-01-27
编程技术问答社区
有可能反编译安卓.apk文件吗?
用户是否可以将我的应用程序的APK文件转换回实际代码? 如果他们这样做 - 有什么方法可以防止这种情况? 解决方案 首先, apk file 只是一个修改的JAR文件.因此,真正的问题是他们可以将DEX文件在其中反编译.答案有点像.已经有拆卸器,例如 dectexer 和 smali .您可以期望它们只会变得更好,从理论上讲,最终应该可以将其分配到实际的Java源(至少有时).请参阅上一个问题将DEX分解为Java Sourcececode . 您应该记住的是混淆永远不会起作用.选择一个良好的许可证,并尽最大努力通过法律执行它.不要用不可靠的技术措施浪费时间. 其他解决方案 apk文件是可以解释的.但是如果代码被混淆,可能很难理解. 使用 检索AndroidManifest.xml文件的内容 显示了各种信息(例如,活动,活动,服务,广播接收器,...) 命令: aapt aapt dump badging sampleApp.apk
0 2024-01-27
编程技术问答社区
反编译Adobe AIR应用程序
是否有将Adobe空气应用分解的工具? 我想检查它们如何在我制作的应用程序上工作. 解决方案 这是您要寻找的;) 其他解决方案 打包的空气文件(具有.AIR扩展名的空气文件)是zip文件.您可以使用任何邮政编码将它们拉开. 但是,空气应用程序可以用Flash,Flex或HTML/JavaScript编写.如果您想查看的应用不是后者,则需要闪光灯或弯曲分解器. 其他解决方案 Sothink SWF分解器声称该文件已损坏. 对我有用的是 jpexs Free Flash Enepolder ,它具有开源和完全免费的额外好处. >
4 2024-01-20
编程技术问答社区
我怎样才能在DotPeek的帮助下看到异步状态机(引擎盖下的异步/等待)?
我正在看视频课,作者在这里谈论异步/等待引擎盖.他展示了准备并分解代码.我想从头开始做同样的事情.我的意思是,以示例为dotpeek的帮助,对一些C#编译的文件进行了编译.因此,我有以下简单的示例: class Program { public static async Task KekAsync() { Console.WriteLine("Current thread id before await {0}", Thread.CurrentThread.ManagedThreadId); await Task.Delay(200); Console.WriteLine("Current thread id after await {0}", Thread.CurrentThread.ManagedThreadId); await Task.Delay(200); Console.Wr
4 2024-01-08
编程技术问答社区