androidapp怎么防止反编译

author author     2023-05-01     531

关键词:

APK在PC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。对PC端来讲伪加密的APK没法被解包无法被反编译,但是对android系统来说它完全不会影响正常的安装运行(对4.2以前的系统)。

伪加密的原理:读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1 反伪加密就是把1改成0就可以了)。
2
伪加密前和伪加密后的对比图如下:
伪加密前:

3
伪加密后:

END
使用第三方平台加密

步骤如下:
登录/注册→上传APK→等待系统加密→完成后下载APK→给APK签名→完成!

2
爱加密作为移动安全行业的第三方平台,为Android APP移动应用提供专业的加固保护方案,包括DEX文件保护、资源文件保护、XML主配文件保护、防二次打包保护、so文件保护、内存保护、高级混淆等,全方位保护Android App,防止被反编译、破解等,维护广大开发者朋友的切身利益!
参考技术A

1 说说我自己的经验

我是使用的360加固,你用梆梆加固也行,还有爱加密,百度也有加固,app加固之后反编译很难。

2 android学习手册就是使用360加固

更多问题解决办法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载。下面是截图。

3 下面是防止反编译的原理:

android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习。2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的。

2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。

Android - proguard混淆器使用,有引用第三方jar包的时候报错:

You may need to specify additional library jars (using '-libraryjars')

处理方法:在proguard.cfg文件顶部加入

-dontwarn com.motorola.**

-keep class com.motorola.** *;

说明:-dontwarn和-keep结合参数使用来保持第三方库中的类而不乱,-dontwarn com.motorola.**意思是保持com.motorola.**这个包里面的所有类和所有方法而不混淆

-keep class com.motorola.** *;意思是ProGuard不要警告找不到com.motorola.**这个包里面的类的相关引用。对应包名改成你对应的jar包顶层package  

 详细可以查看官方文档 http://developer.android.com/tools/help/proguard.html

 

有些应用反编译后java代码用jd-ui根本都无法打开,连混淆的代码都看不到的,本人尝试多次都做不到(网上有说是混淆工具针对反编译工具的),希望知道的告知下怎么处理的。 

--注:上面的问题经过本人多次尝试终于找到部分原因了,一.使用的版本比较低,现在最新版的是dex2jar-0.0.9.7,二.dex2jar目录不要有中文的,三.需要把class.dex直接拖到dex2jar.bat,生成 classes.dex.dex2jar.jar。如果生成jar过程中报一堆at com.googlecode.dex2jar.ir.ts.TopologicalSort.dfsRemove(TopologicalSort.java:135)错误的话还是不能打开的,看了下官方的问题报告有很多人有类似的问题,貌似进入了一个死循环,跟apk文件大小有点关系,应该是dex2jar的一个bug。

注意:上面的功能只是把java代码混淆了,xml和资源文件、图片并没有混淆,有些游戏应用图片比较重要需要转换成dat文件 再加上自己的加密解密算法还原。

 另外加了混淆功能后还有压缩的功能,混淆后的apk比原来的小(具体比例看你的代码重复量了)

 

说完防止反编译再来说说怎么反编译吧 

先说一下反编译的流程和原理:

1.用apktool 把apk--> 资源包(java代码变成smali文件看不懂的),可以修改资源包里面的文件。

2.apk后缀名改成zip或rar解压,获取 classes.dex 文件,用dex2jar转换成jar包(注:直接解压出来的资源文件是不能直接打开的,要用第一步的反编译工具,dex2jar.bat文件目录不要有中文)。

------------------------------------------ 

新版使用说明(不用把apk换成zip解压了,可以直接把apk文件拖到dex2jar.bat上--不能包含中文名称)

下载dex2jar最新版http://code.google.com/p/dex2jar/downloads/list

解压dex2jar-version.zip文件到一个目录. 比方说 /home/panxiaobo/, C:\\

unzip -x dex2jar-version.zip -d /home/panxiaobo

使用 dex2jar 来生成 .jar 文件. dex2jar会在someApk.apk所在目录下生成一个someApk_dex2jar.jar文件.

   linux sh /home/panxiaobo/dex2jar-version/dex2jar.sh /home/panxiaobo/someApk.apk

   windows C:\\dex2jar-version\\dex2jar.bat someApk.apk

-------------------------------------------------- 

3.用jd-ui等java反编译工具直接查看java代码。

4.把java代码和第一版的资源包整到一起重新组成一个新的应用。

5.用apktool 重新编译。

6.用签名工具重新签名。

7.重新发布带新的签名的应用。

 注:如果不用改java代码,只是换换风格和汉化2.3.4步则不用做。

本回答被提问者采纳

dotfuscatorpro防止反编译&ilspy反编译

 DotfuscatorPro_4.9可以防止你的.NET软件被反编译,可以在一定程度上防止你的软件被反编译。现在很多软件都有被反编译的现象,虽然不能做到百分百的防范,但是你至少可以先做些技术上的处理,至少能挡住许多小白。打开Do... 查看详情

c#防止反编译

http://blog.csdn.net/wangpei421/article/details/42393095http://www.cnblogs.com/tianguook/archive/2012/10/06/2713105.htmlhttp://zhoufoxcn.blog.51cto.com/792419/163944  查看详情

如何防止你的jar被反编译?

...的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,... 查看详情

如何使 apk 安全。防止反编译

】如何使apk安全。防止反编译【英文标题】:HowtomakeapkSecure.ProtectingfromDecompile【发布时间】:2011-09-0806:46:27【问题描述】:我正在开发一个应用程序,它具有SQLite数据库来存储必须保护的个人信息。有哪些方法可以保护这些个人... 查看详情

如何防止你的jar被反编译?

...的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,... 查看详情

怎么让androidstudio的编译的aar防止反编译

参考技术A1、简述在比较大的Android项目的开发中,我们经常会遇到工程、jar包等等之间相互引用的方式。一般我们通过在gradle文件中配置依赖来解决通用配置Gradle的一些基本依赖配置方式如下:compilefileTree(dir:'xxx',include:[&#... 查看详情

iOS中的反编译可能性以及如何防止它们

】iOS中的反编译可能性以及如何防止它们【英文标题】:DecompilationpossibilitiesiniOSandhowtopreventthem【发布时间】:2013-07-2823:07:38【问题描述】:我最近阅读了有关反编译iOS应用程序的信息,我现在非常担心它。如以下帖子(#1和#2)... 查看详情

如何防止代码被反编译

参考技术A由于apk是Android虚拟机加载的,它有一定的规范,加密apk后Dalvik无法识别apk了。完全避免是不可能的,总有人能够破解你的代码。但是有几种方式来提高被反编译取代码的难度。1关键代码使用jni调用本地代码,用c或者c+... 查看详情

springboot代码混淆,防止反编译代码泄露(代码片段)

编译        简单就是把代码跑一哈,然后我们的代码.java文件就被编译成了.class文件反编译        就是针对编译生成的jar/war包里面的.class文件逆向还原回来,可以看到你的代码写的啥。        比较常用的... 查看详情

实用:如何防止你的jar被反编译?

...意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在。今天就拜读了一篇相关的文章,受益匪浅,知彼知己嘛!!之所以会对java的反编译感兴趣,那是因为自己在学习的过程中,常... 查看详情

如何防止反编译或检查 python 代码?

】如何防止反编译或检查python代码?【英文标题】:Howtopreventdecompilationorinspectingpythoncode?【发布时间】:2011-09-1710:38:22【问题描述】:让我们假设有一个大型商业项目(a.k.aProject),它在后台使用Python来管理插件,以配置可以由... 查看详情

包装器和混淆器使用哪些已知技术来防止反编译?

】包装器和混淆器使用哪些已知技术来防止反编译?【英文标题】:Whataretheknowntechniquesusedbywrappersandobfuscatorstoprotectagainstdecompiling?【发布时间】:2020-08-2112:55:26【问题描述】:我不希望让我的应用程序99%安全,我的目标也不是阻... 查看详情

面试官:如何防止java源码被反编译?我竟然答不上来。。

...源博客:https://www.cnblogs.com/dartagnan/面试官:如何防止Java源码被反编译?我竟然答不上来。。java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在。... 查看详情

javajar如何防止被反编译?代码写的太烂,害怕被人发现

...的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,... 查看详情

springboot玩一玩代码混淆,防止反编译代码泄露

点击关注公众号,实用技术文章及时了解来源:https://blog.csdn.net/qq_35387940编译简单就是把代码跑一哈,然后我们的代码.java文件就被编译成了.class文件反编译就是针对编译生成的jar/war包里面的.class文件逆向还原回来&#x... 查看详情

app混淆加固+防止反编译+360加固

androidstudio混淆加密,没有使用第三方加密后的效果好,混淆加密还能看到大体的混淆包名,使用了那些框架而使用了360加固后,全部看不到了下图是360加固window操作IDE,非常好用!然后用反编译软件反编... 查看详情

javajar如何防止被反编译?代码写的太烂,害怕被人发现(代码片段)

...的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,... 查看详情

怎么加固安卓软件????

加固安卓软件一般要达到以下效果:1、防逆向:通过DEX文件加壳以及DEX虚拟化等技术,防止代码被反编译和逆向分析。2、防篡改:通过校验APK开发者签名,防止被二次打包,植入广告或恶意代码。3、防调试:防止应用被IDA、JEB... 查看详情