-apk-

Android是一种基于Linux 内核和其他开源软件的修改版本的移动操作系统,由一个被称为开放手机联盟的开发者联盟开发,并由Google 提供商业赞助。android平台,运行在Dalvik虚拟机上。

 

 Android apk结构:

APK文件其实是zip格式,后缀名被修改为apk,可以用解压软件打开,结构如下:

 AndroidManifest.xml是程序全局配置文件,描述应用的名字、版本、权限、引用的库文件等信息。apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具解开,命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml。

classes.dex是java源码编译后生成的dalvik字节码文件。其中包含APK的可执行代码,反编译apk时,反编译的其实就是dex文件。

resources.arsc是编译后的二进制资源文件的索引。

res目录存放资源文件,包括图片,字符串等。

libs目录存放程序中用到的so库,即动态链接库。

META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全

assets目录用于存放需要打包到应用程序的静态文件。

Activity:

Activity表示应用的一个屏幕,用于呈现给用户,并可接受处理与用户交互产生的界面事件。

Android系统中以栈的形式保存所有Activity。当一个新的Activity启动时,该Activity就会被压入Activity栈顶。当用 户按下Back返回按钮,当前Activity就会被关闭,栈中下一个Activity就会被移到栈顶,变成活跃状态。Activity有4种状态:

活动状态。Activity处于栈顶,可见的、具有焦点,可接受用户交互。系统会优先保持其所需资源,使其处于可见状态。

暂停状态。某些状态下,Activity处于可见状态,但是没有获得焦点,不能与用户交互,此时处于暂停状态,比如长按Home键,当前应用就会变为暂停状态。在极端状况下,系统会终止处于暂停状态的Activity,释放资源。

停止状态。当一个Activity完全不可见时,它就会变为停止状态。此时内存中还会保留相关信息。

Android内存管理会优先释放处于非活动状态Activity的资源,接着释放处于停止状态的资源,只有在极端状况下,才会释放处于暂停状态Activity的资源。

当启动一个Activity时,会依次执行onCreate、onStart、onResume方法,当Activity重新获得焦点时,会依次执行 onRestart、onStart、onResume方法,当关闭Activity时,会依次执行onPause、onStop、onDestroy方 法

了解smali结构

  使用Apktool反编译apk后,会在反编译目录下生成一个smali文件夹,里面存放着的就是所有反编译出的smali文件,这些文件会根据程序包的层次结构生成相应的目录,程序中所有的类都会在相应的目录下生成独立的smali文件。baksmali在反编译文件时,会为每个类单独生成了一个smali文件,内部类作为一个独立的类,它也拥有自己独立的smali文件,其文件名以“外部类名$内部类名”的形式定义。

签名检查的原理

 每一个软件在发布时都需要开发人员对其进行签名,而签名使用的密钥文件是开发人员所独有的。破解者通常无法拿到开发人员的签名密钥,因此,签名是Android软件中一种有效的身份标识。如果软件运行过程中发现签名和自身发布时的不一致,很有可能是被篡改过,就可以中止软件的运行。Android SDK中提供了检测软件签名的方法,可以调用PackageManager类的getPackageInfo()方法,为第二个参数传入PckageManager.GET_SIGNATURES,返回的PackageInfo()对象中的signatures字段就是软件发布时的签名。但是,这个签名内容较长,不适合在代码中做比较判断,所以可以计算签名的哈希值并以它来做比较。哈希值相同,可以认为签名相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值