随笔分类 -  Android

上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要:提高反编译难度的几种方式:对于软件安全来说,有攻就要有防才对。不然,Android整个产业链就会被这样的Crack给毁掉。第一种办法:将核心代码用JNI写进so库中。由于so库的反编译和破解的难度加大,所以这种方式防止反编译效果不错。关键代码使用jni调用本地代码,用c或c++编写,相对于class文件,so相对比较难于反编译。缺点是,对于Java层的代码没有保护作用,同样可以被篡改。很多搞java的程序员不太熟悉如何写c或c++代码,同时本地代码很难调试。出错容易导致整个虚拟机死掉,用户感受不好。第二种办法:在线签名比较。在程序初始化时,联网将运行的程序的签名与服务器上的官方标准签名进行比较 阅读全文
posted @ 2013-04-22 11:35 GreyWolf 阅读(356) 评论(0) 推荐(0)
摘要:在Android系统中,所有安装到 系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用 阅读全文
posted @ 2013-04-22 11:34 GreyWolf 阅读(256) 评论(0) 推荐(0)
摘要:最近编程时遇到问题:写了一个android小程序,打包后用apktool反编译再打包都没问题,安装时出现Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]错误,网上查资料原来是签名的问题,解决方案如下。《一》使用命令行生成签名文件(1)创建一个用来存放签名文件的文件夹Android_keystore(2)在命令行窗口中输入命令:(粗体部分)[java]view plaincopyD:\Android_keystore>keytool-genkey-aliasaeo_android.keystore-keyalgRSA-validity20000- 阅读全文
posted @ 2013-04-22 11:33 GreyWolf 阅读(225) 评论(0) 推荐(0)
摘要:最近比较懒,博客一直都没更新,上次有人问ant 来编译android 工程,这里我就完整的整理了一下。如果你嫌弃IDE太慢或者觉得手动编译更Cool,不用IDE你可以学到更多。也是成为牛人的必修课啊!一,准备antant 官网可下载http://ant.apache.org/ant 环境配置:1。解压ant的包到本地目录。2。在环境变量中设置ANT_HOME,值为你的安装目录。3。把ANT_HOME/bin加到你系统环境的path。更多的介绍可以去google相信有很多二,详细步骤和说明,这里我们要知道一些Android命令。前提条件已配置好android sdk 环境,所以可以在任意目录下执 阅读全文
posted @ 2013-04-22 10:39 GreyWolf 阅读(164) 评论(0) 推荐(0)
摘要:终于知道怎么在android源码中混淆编译了,不用ant也不用eclipse插件。1.在需要混淆的工程目录下(package/apps/下的工程)添加proguard.flags文件,该文件即为网络传说中的proguard.cfg,只是命名不一样而已,然后再Android.mk中添加如下两句:LOCAL_PROGUARD_ENABLED := fullLOCAL_PROGUARD_FLAG_FILES := proguard.flags上面的full 也可以是custom,如果不写这句,那还得添加如下一句:TARGET_BUILD_VARIANT := user或者TARGET_BUILD_V 阅读全文
posted @ 2013-04-22 10:17 GreyWolf 阅读(457) 评论(0) 推荐(0)
摘要:前言:C/C++,JAVA,C#无论是写起来,还是看起来,都是相对较易懂的,但MAKEFILE\ANT BUILD.XML,Shell脚本,等等涉及诸多的宏变量、TAG关键字、命令关键字,又缺少专门的编辑环境,测试条件,看起来,改起来,写起来都是有一定难度。很多国外的Android开源软件应用项目,都是用ANT编译,而非用Eclipse集成开发环境。更多人选择是在Linux下开发Android应用,而非在Windows下开发。一、Ant的概念可能有些读者并不了解什么是Ant以及如何使用它,但只要使用通过Linux系统的读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经 阅读全文
posted @ 2013-04-22 10:02 GreyWolf 阅读(336) 评论(0) 推荐(0)
摘要:AAPT 工具介绍下面是取自"http://www.androidcn.net/wiki/index.php/Reference/aapt"的介绍aapt stands for Android Asset Packaging Tool and is included in the tools/ directory of the SDK. This tool allows you to view, create, and update Zip-compatible archives (zip, jar, apk). It can also compile resources 阅读全文
posted @ 2013-04-19 18:36 GreyWolf 阅读(873) 评论(0) 推荐(0)
摘要:Android本身是支持ant打包项目的,并且SDK中自带一个build.xml文件。通过该文件,可以对文件进行编译、打包、安装等。并且支持多种方式打包,如debug或者release。一般的,可以按照如下方法进行操作:首先创建一个Android工程。工程创建好后,需要为工程添加ant支持,即创建相应的build.xml文件。这个文件不需要用户自己创建,只需要执行如下命令即可:<sdk>/tools/android update project -p <project> -t <target>其中:sdk为sdk的安装目录,其下的tools/android是 阅读全文
posted @ 2013-04-19 18:12 GreyWolf 阅读(237) 评论(0) 推荐(0)
摘要:当前的web项目有引用到子工程项目,而且多个子工程项目也有引用到其它的工程项目,现要求利用Ant自动将web项目打包成war包,其中引用到的子工程项目需打成jar包,而且必须是混淆后的jar包。其中混淆代码的工具选择了开源的Proguard(http://proguard.sourceforge.net/),可以运行proguard自带的proguardgui.jar(图形化用户界面)生成proguard配置文件。ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字 阅读全文
posted @ 2013-04-19 18:07 GreyWolf 阅读(598) 评论(0) 推荐(0)
摘要:转自:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72630.aspx前段时间把Android的工程用Ant Build搞定后,现在需要把编译后.class进行混淆,以优化减少体积和防止别人反编译,开始在网上看了一些关于ProGuard的介绍,以后能够比较快的解决,但是还是花了两天半的时间才搞定,也许是自己对Java和ProGuard不了解,网上也有一些例子介绍Android ProGuard,但是你全部拿过来肯定是不行的,这需要你认真的读他的手册和国外开发人员写的Blog,我是把这个ProGuard手册看了两遍才把问题解决的。下面转 阅读全文
posted @ 2013-04-19 18:05 GreyWolf 阅读(518) 评论(0) 推荐(0)
摘要:上篇介绍了应用程序从源码到安装包的整个过程,考虑到篇幅过长,遂将原理内容分成两部分来介绍。接下来,在本篇中,主要介绍Android平台应用程序的运行原理。 在阅读了SDK文档中“Application Fundamentals”一篇的内容后,根据自己的理解绘制了下面的示意图: 每个应用程序安装后,系统便会为其分配一个独立的存储空间,所谓的“Security Sandbox”,用于存放字节码文件、资源文件及配置文件等,同时,系统会为每一个应用程序分配唯一的ID,用以标识该应用程序的相关文件和资源,系统通过设置权限从而实现一个应用程序在一般情况下只能访问该应用程序的文件和资源。当应用程序或者它的某 阅读全文
posted @ 2013-04-19 18:03 GreyWolf 阅读(196) 评论(0) 推荐(0)
摘要:接着上一篇的内容,继续从全局了解Android。在清楚了Android的平台架构(可以看作是静态原理)后,还需要掌握其动态原理。动态原理包含两部分,一部分是编译原理,另一部分是运行原理。有人会说,搭建一个基于Eclipse的Android开发环境,编译和运行只要点击按钮即可完成。但是,如果只是“知其然而不知其所以然”的话,在后面的开发中一旦遇到奇怪的问题后可能就束手无措啦。所以,即使是作为初学者,如果有计算机基础,最好还是了解一下这两部分的内容。下面的内容很多都是参考至zuolongsnail的《Android命令行手动编译打包详解》,博文地址:http://www.cnblogs.com/z 阅读全文
posted @ 2013-04-19 18:02 GreyWolf 阅读(191) 评论(0) 推荐(0)
摘要:Android编译,打包、签名详细教程Author:JojolData:2010.08.041.Android程序编译、打包、签名、发布的三种方式:方式一:命令行手动编译打包方式二:使用ant自动编译打包方式三:使用eclipse+ADT编译打包2.Android编译、打包的步骤:2.1第一步 生成R.java类文件:Eclipse中会自动生成R.java,ant和命令行使用android SDK提供的aapt.ext程序生成R.java。2.2第二步 将.aidl文件生成.java类文件:Eclipse中自动生成,ant和命令行使用android SDK提供的aidl.exe生成.java文 阅读全文
posted @ 2013-04-19 17:49 GreyWolf 阅读(207) 评论(0) 推荐(0)
摘要:Android 命令行手动编译打包过程图【详细步骤】:1使用aapt生成R.java类文件:例:F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S res -I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -M AndroidMani 阅读全文
posted @ 2013-04-19 17:48 GreyWolf 阅读(186) 评论(0) 推荐(0)
摘要:此脚本是针对于android在线更新的SDK,以前android有离线安装包,后来改为直接在线安装进行,两者的成本在于sdk的路径和一些工具类的路径不同。此脚本用于进行自动编译用户需要的APK安装包,使用时候,请将签名用的*.keystore放在和build.xml同一目录,并命名为android.keystore,(如想更改,请在build.xml 中的jarsigner target进行更改)build.propertiesJava代码android.tools=${sdk.folder}toolsandroid_version=2.1apk.sdk.home=D\:/androidsdk 阅读全文
posted @ 2013-04-19 17:46 GreyWolf 阅读(256) 评论(0) 推荐(0)
摘要:在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复 杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程 的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。消息循环是一个很有用的线程方式,曾经自己用C在Linux下面实现一个消息循环的机制,往消息队列里添加数据,然后异步的等待消息的返回。当消息队列为空的时候就会挂起线程,等待新的消息的加入。这是一个很通用的机制。在Android,这里的线程分为 阅读全文
posted @ 2013-04-19 17:39 GreyWolf 阅读(201) 评论(0) 推荐(0)
摘要:o IBinder接口IBinder接口是对跨进程的对象的抽象。普通对象在当前进程可以访问,如果希望对象能被其它进程访问,那就必须实现IBinder接口。IBinder接口可以指向本地对象,也可以指向远程对象,调用者不需要关心指向的对象是本地的还是远程。transact是IBinder接口中一个比较重要的函数,它的函数原型如下:virtual status_t transact(uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0) = 0;android中的IPC的基本模型是基于客户/服务器(C/S) 阅读全文
posted @ 2013-04-19 17:38 GreyWolf 阅读(397) 评论(0) 推荐(0)
摘要:Find and connect to a databaseYou can find busybox onBenno’s site. If you can find the location of the .db file, you don’t really need busybox. Though i highly recommend it since it has many useful utilities.C:\android>adb shell# export PATH=/data/busybox:$PATHexport PATH=/data/busybox:$PATH# fin 阅读全文
posted @ 2013-04-19 17:37 GreyWolf 阅读(521) 评论(0) 推荐(0)
摘要:欢迎阅读本文,你能关注本文,你知道你需要进程间通信、需要AIDL(以及Binder),那么可以默认你对这些概念已经有了一些了解,你(大致) 知道它们是什么,它们有什么用,所以为了节约大家的眼力和时间,在此我不复制粘贴网上泛滥的博客或者翻译冗长的android文档。 关于AIDL的介绍在文档:docs/guide/developing/tools/aidl.html 关于IBinder的介绍在文档:docs/reference/android/os/IBinder.html 以及Binder:docs/reference/android/os/Binder.html 在后文中,我将以我自己的理解 阅读全文
posted @ 2013-04-19 17:35 GreyWolf 阅读(146) 评论(0) 推荐(0)
摘要:在网上看到一篇编译android源码的文章,照着做挺行的,通过参考网上的相关资料,我编译Android源码的步骤如下: * 1 我的系统是Ubuntu 8.04 * 2 系统上必须安装以下工具(摘自网上的资料): sudo apt-get install build-essential sudo apt-get install make sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install libc6-dev sudo apt-get install flex sudo apt-get install bi 阅读全文
posted @ 2013-04-19 17:34 GreyWolf 阅读(178) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 ··· 9 下一页