最近在有平台合作伙伴告诉我全国SDK“百度最差,联想第二”。
听到这句话让我很感慨,因为我接过联想的SDK,而且知道联想的SDK的外包方。
可能巨头都比较专注自己的业务而忽略一些边缘的东西。
不过我最近听说的华为和TX在开发自己的flash。不知道两年后浏览器视频流会有什么变化。
2014.01.07
光荣在于平淡,艰巨在于漫长
最近在有平台合作伙伴告诉我全国SDK“百度最差,联想第二”。
听到这句话让我很感慨,因为我接过联想的SDK,而且知道联想的SDK的外包方。
可能巨头都比较专注自己的业务而忽略一些边缘的东西。
不过我最近听说的华为和TX在开发自己的flash。不知道两年后浏览器视频流会有什么变化。
2014.01.07
把逆向丢了有一段时间了,总觉得有些东西应该坚持研究下去。最近一年在做移动项目的时候一直都想把整个android底层了解清楚。
直到最近有点时间空余下来。一段时间后发现android的芯片ARM的ARM汇编和x86的16,32位汇编其实原理是相通的,只是可能在语法 在硬件结构上会导致有差别。(虽然这篇文章并用不到这种东西),而相比于android的Dalvik虚拟机代码,Dalvik机器码更便于阅读。只要好好记住Dalvik的一些规则便可。
然后我们从简单的逆向开始吧。这篇我会拿一个有广告的android应用来试手,当然原理本身非常简单,当然并没有针对的意思,下面是一个简单的使用逆向技术而修改程序的过程:
使用到的工具:IDA,C32ASM,JD-gui,Notepat++,apktool,android签名工具。
需要做手术的应用:某事百科。
在ANE中如果SDK调用了so库,则需要把so库放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下。
可以贴个ADT代码说明问题:
[code lang=”java”]
//m_configType.equals("apk") 是否是发行模式
//(hasCaptiveRuntime() 是否带运行时
if ((m_configType.equals("apk")) || (hasCaptiveRuntime()))
{
destApkDirectory = "lib/armeabi-v7a/";
}
else
{
destApkDirectory = "lib/armeabi/";
}
[/code]
而这个armeabi和armeabi-v7a究竟是什么意思?
有什么深意么?
为什么调试模式和发行模式adobe会选择不同的文件夹?
我在这篇记录下我对于这个小问题的理解。
armeabi是指的该so库用于ARM的通用CPU,而v7a的CPU支持硬件浮点运算。因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力,在AIR打包APK调试模式adobe选择的是通用性强的armeabi模式。
又到一年新旧交替,每年的这个时候我总是希望能用简短的几段文字总结过去的一年,但是今年当跨年时刻来临我打开博客编辑器的时候,我发现我想说的太多.2013是我毕业后的第一年完整的年度,横跨1213两年间发生好多好多的事情,而且深刻的感觉到时间正如火箭,(记得一个形容时间的段子,末尾是大学毕业后时间像火箭.)
犹记得去年的这个时候我正在用刺客的精神激励自己,同时没有人知道那个时候我也正是最痛苦的时候,似乎很多很多的事情都会发生在毕业的那个雨季.当时我还在用涉世未深来抚慰自己的幼稚与偏激.2013一整年虽然感觉似火箭 但是很多时候又感觉似蜗牛,总是希望一切的不愉快快点过去.但是很多时候人生总是不愉快的.于是我后来才知道记住才是遗忘,遗忘才能泰然.虽然有不愉快 但是快乐的时候总是比较多.而且人类都有一个通病,只会记得快乐的.
前言
拔开云雾见到明月之后才发现柳暗花明又一村.
修改的内容
1.自定义AIR主activity的launchMode,解决平台支付过程中activity堆栈被切掉的问题.
说明:改为默认的launchMode:android:launchMode="standard"
2.去除包名前缀"air.",虽然这无伤大雅 但是前缀带air总有一种不太好的感觉.
说明:默认为设置环境变量“AIR_NOANDROIDFLAIR=true”可去掉,
3.去除android资源国际化限制.
说明:修改aapt编译参数。
前言
本来此篇当作最终篇,但是一下子写说多了,说着说着就占了很多的篇幅了,于是把这篇分拆开来当作案例分析,本篇使用的案例是联想SDK,具体的请看我的github地址…可能我写的那么多乱且没什么朋友看,但是我自己也当作是一种记录与训练,怎么把我知道的对的或者错的展现给第二个人 这是我迫切需要锻炼的能力.
Let`s going on
下面将一步一步针对ADT进行DIY,以下是一些事先需要准备的:
配置的IDE环境:android开发环境,AIR开发环境,JAVA开发环境.
配置的环境变量:android SDK tool,JDK1.7,JRE,ADT,Apktool5.2
我使用的系统:XP,Win7,Mac
SDK版本:AIRSDK:3.5,androidSDK2.2.3
案例ANE:联想支付(https://github.com/platformanes/AndroidLenovoANE)
经过前面三篇的介绍,我相信大家应该知道ADT在编译 打包 AIR FOR ANDROID项目的时候的整个工作流程,所以关于流程原理上的东西 在这里就不多赘述了,ADT编译android源码相比编译资源来说就简单很多,大家直接看源代码注释就能看明白.这一篇分析的是 ADT操作androidSD之中的dx工具把 一堆jar文件编译成dex文件的操作过程,我们都知道 每一个apk文件都需要一个dex文件,而dex文件则是可以被android设备直接执行的文件,就类似与swf文件对于flash player而言.对于想了解更多android程序原理和结构的同学,我推荐大家去购买由国内知名安全论坛看雪学院出品的一本超级好书:android软件安全与逆向分析.
不够这本书需要一定的android基础.现在我们知道dex文件便是android设备最终可执行的文件 那么我们的ADT是如何生成dex文件的呢?下面我们直接看代码.
没错今天又有东西需要补充了,其实是一个不一定会出现的问题.之前有犹豫写不写出来,但是随着接触的android SDK越多 发现其实这个问题还是蛮普遍的.
我觉得是需要差别对待.这个jar包含了android基础的几个包:
最近非常的忙,一直没怎么更新PlatformANEs,于是更新一下这四个小平台ANE。希望能帮助接这几个小平台的小伙伴.
[code lang=”java”] enjoy your code [/code]
网上有很多的人分享IOS越狱,官方版的程序自更新。但是我还是习惯记录一下。IOS项目的程序更新使用到了itms-services协议,我们并不需要太了解itms-services协议是什么,只需要在服务器配置一个xml 和在 AIR 项目中调用遍可以实现我们想要的功能。
针对以下XML需要改 的地方只是:
首先是需要在服务器配置一个xml: