‘壹’ 怎样防反编译怎样防止应用被逆向分析
朋友你好,很高兴为你解答问题。
我的回答和另外一位朋友的回答差不多,代码混淆(proguard)也可以使用伪加密(apk本身是zip,对zip末尾加字节的方式防止apktool逆向,但是该方法在电脑上有些手机助手无法识别apk文件,手机上可以识别)。还有就是可以交给几维安全APP加密平台,不需要什么技术要求。同时也可以在XML文件查看有没有添加东西。
防反编译,几维安全-领先的应用加固服务商,兼容性高,0损耗,安全性高,免费试用。防反编译,几维安全提供防逆向,防篡改,防调试,防二次打包等一站式应用加固方案。
‘贰’ Android软件安全与逆向分析的Android术语
逆向分析是一种逆向工程技术,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理 。Android 软件安全与逆向分析是针对Android 软件的逆向分析,对原有APK文件进行反向研究,包括对语法,代码等进行分析,破解原有APK的源代码,资源文件比如图片,音频等等行为。
1.APK一旦被破解,反编译之后的源码就被破解者获取,开发者的劳动成果就被窃取,危害了开发者的利益。
2.反编译的APK如果被进行二次打包,那么APP就成为盗版产品,盗版产品侵害开发者的版权
3.反编译的产品有可能被破解者进行二次打包,注入恶意代码,窃取用户隐私,恶意扣除用户手机流量和资费,获取用户数据等等,这些行为严重伤害用户的利益。
4.盗版产品不受保护,用户得不到合理的售后支持和服务。
在这种情况下就需要加强对安卓APK DEX文件进行保护的技术,防止反编译。dex文件其实就是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源码通过ADT编译成Smali语言这是一个优化的过程,相对于.class文件它体积小、运行效率高、被编译后可读性低;Smali再到class. DEX本身就是一个加壳保护的过程。 DEX文件如果未做好保护,黑客通过反编译可让源码完全暴露,可利用阅读源码来找到App的设计流程,通过对程序流程的了解将很容易对程序进行盗版、恶意篡改、恶意代码注入等危险行为 。
1.隔离Jave程序。这种是最根本的保护,将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类进行加密,开发人员可以将关键的JavaClass放在服务器端,用户通过服务器接口获取服务而不是直接通过java文件。破解者就无法获取class文件了。目前有很多通过接口提供服务的标准和协议,比如HTTP,webservice,RPC等等。但是呢,这种方式并不是适合所有的APP,比如单机运行的程序的无法隔离Java程序。
2.对class文件进行加密保护。开发者可以将一些关键的class文件进行加密,比如对注册码,序列号管理相关的类进行加密来防止反编译。在使用这些被加密的类之前,程序需要首先对这些类进行解密,然后才能将这些类加载在JVM中。要解密这些类,必须要通过一些硬件或是软件才能完成。
3.转换成本地代码
这是一种防止反编译的比较有效的方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,或者可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法.
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术 。
5.第三方工具加密
上面四种方式可能要耗费开发者很大一部分精力和时间,如果想要方便的话,可以寻求第三方的加密工具。目前市场上有一些工具是可以帮助APK加密的,比较知名的是爱加密的加密平台。相对于上面四种方式,这种第三方的加密工具要更全面和专业,可以有效的保护dex文件,so库文件,xml主配文件以及其他资源文件不被反编译和恶意篡改。
爱加密专家提醒,这些方式并不是独立运用的,有时候可以混合使用,根据自己的情况来定,比如说高级混淆之后还是可以使用第三方的爱加密工具进行高级保护,多一重安全。
‘叁’ 《有趣的二进制软件安全与逆向分析》epub下载在线阅读全文,求百度网盘云资源
《有趣的二进制》([ 日] 爱甲健二)电子书网盘下载免费在线阅读
链接: https://pan..com/s/1leBcD-f8EgBVOxGAsl_oxw
书名:有趣的二进制
作者:[ 日] 爱甲健二
译者:周自恒
豆瓣评分:7.9
出版社:人民邮电出版社
出版年份:2015-10
页数:272
内容简介:
《有趣的二进制:软件安全与逆向分析》通过逆向工程,揭开人们熟知的软件背后的机器语言的秘密,并教给读者读懂这些二进制代码的方法。理解了这些方法,技术人员就能有效地Debug,防止软件受到恶意攻击和反编译。本书涵盖的技术包括:汇编与反汇编、调试与反调试、缓冲区溢出攻击与底层安全、钩子与注入、Metasploit 等安全工具。
《有趣的二进制:软件安全与逆向分析》适合对计算机原理、底层或计算机安全感兴趣的读者阅读。
作者简介:
爱甲健二
曾就职于NetAgent株式会社,负责逆向工程、恶意软件分析、渗透测试等工作。2008年7月任董事。此后,在株式会社Fourteenforty技术研究所(现更名为株式会社FFRI)从事计算机安全技术研究和软件开发工作。
曾参加Black Hat Japan 2008(日本)、HITCON 2011(中国台湾)等会议,并发表重大研究成果。着有《汇编语言教程》(アセンブリ言语の教科书)、《TCP/IP教程》(TCP/IPの教科书)等。
‘肆’ 怎样反编译程序
高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件: VB: VBExplorer 、VB反编译精灵和VBRezQ;只能反编译界面图像,好像代码不能完全反编译 JAVA: JAD ;java的反编译比较常见,所以反编译比较完全, 将class文件反编译成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易语言:E-Code Explorer.exe(易格式可执行文件分析器)。
‘伍’ 反编译是什么意思
计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,
某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
(5)反编译技术与软件逆向分析pdf扩展阅读
反编译是一个复杂的过程,反编译软件有:
1、SWF相关的反编译程序
Action Script Viewer
第一个也是最强大的商业SWF反编译工具,同类产品中,它的AS代码反编译效果最好,SWF转Fla工程重建成功率最高。
2、Android相关的反编译程序
SMALI/BAKSMAL
SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
3、python相关的反编译程序
uncompyle2
uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件。
参考资料来源:网络-反向编译
‘陆’ App静态逆向分析思路浅析(过检测)
推荐阅读
福利来啦-优惠券活动
App静态逆向分析思路浅析(过检测)
https://blog.csdn.net/u011426115/article/details/121346288
jadx+frida
查看apk是否加壳 (apk未加壳)
搜索root检测特征、逻辑,其中Hook ( 如:Xposed、Frida等 )检测的字符串特征类似,可以通过jadx、JEB3等反编译工具快速搜索定位到检测关键点
Hook下面的方法( 使用Xposed、Frida等进行Hook )
com.google.firebase.crashlytics.internal.common.CommonUtils.isRooted
com.google.firebase.crashlytics.internal.common.CommonUtils.isEmulator
com.google.firebase.crashlytics.internal.common.CommonUtils.isDebuggerAttached
com.google.firebase.crashlytics.internal.common.CommonUtils.isAppDebuggable
CommonUtils.isRooted.overload().implementation = function(){
}
在jadx的搜索文本中,输入” native+空格 ”快速定位App中的native接口,分析是否存在Root、Hook、模拟器环境、云手机环境、App风险环境等相关检测
搜索" hook、xposed、frida、su、root、/system/ "等特征字符串快速定位
分析apk是否可以反编译、是否可以重打包、是否可以签名,是否存在签名校验等检测
推荐阅读
Android安全基础
Objection动态分析App
Frida Hook的使用方法
IDA静态动态逆向分析基础
Android逆向分析常用方法
IDA动态调试逆向分析Android so
C#开源项目-二进制文件的反编译器
Radare2逆向分析dex/so/二进制等文件的使用方法
‘柒’ 什么是逆向工程什么是反编译可以根据已经封装好的程序软件进行破解分析出源代码吗
逆向工程就是根据已有的程序来反推出源代码以及原来的工程设置,反编译就是具体的将已经编译好的程序进行反向工程,从而获取部分源代码。一般来说,逆向工程或者反编译是无法百分之百获得源代码的,只能从一定程度上来自源代码进行猜测,因此根据已经封装好的程序软件来进行破解分析出源代码的可能性并不大,逆向工程的意义并不在于破解源代码,而是在于了解软件本身的设计,对于复杂的程序软件而言破解源代码的可能性几乎为零。
‘捌’ 《有趣的二进制软件安全与逆向分析》pdf下载在线阅读全文,求百度网盘云资源
《有趣的二进制软件安全与逆向分析》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1GZWtfVpu8uAeXq-kbI2OwA
‘玖’ 反编译什么意思,具体该怎么用
反编译:高级语言源程序经过编译变成可执行文件,反编译就是逆过程。计算机软件逆向工程,又称计算机软件恢复工程,是指对其他软件的目标程序(如可执行程序)进行“逆向分析和研究”,从而推导出设计思想、原理、结构、算法、处理过程、操作方法等要素,等被其他软件产品使用,在某些特定情况下可能会衍生出源代码。反编译可以作为开发软件时的参考,也可以直接用于软件产品中。
(9)反编译技术与软件逆向分析pdf扩展阅读:
如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。
‘拾’ 《Android软件安全与逆向分析》pdf下载在线阅读全文,求百度网盘云资源
《Android软件安全与逆向分析》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1brYBFOyXsboWMkT_zplYdw