随着智能手机的普及,功能越来越强大。程序也越来多和复杂化。研究一下android系统的逆向工程也是挺有意思的。 
目前android逆向工程还处于初级阶段。表现在于: 
1.没有完整的动态调试程序。目前由于android系统的bionic并不完全支持POSIX,导致现有编译的gdb不支持多线程无符号调试。(我实验了一下,的确多线程问题比较多,当然,gdb本身也有问题)。所以对于NDK逆向工程比较麻烦,以静态分析为主。 
2.手机本身种类较多,而且android版本繁多,更新较快,增加了逆向的难度。 
但是android系统自身也有好处: 
1.手机系统的简化工作让分析也随着简化。 
2.公开源代码 大不了我修改系统API编译系统来进行API hook。谁也拦不住。(android不支持LD_Library API hook). 
以上谈到的都是arm c,一般用于NDK中的逆向工程。那么对于才用Dalvik虚拟机中的dex程序,逆向就完全没有难度。目前最好的逆向工具是baksmali。综合工具是apktools,甚至于支持动态调试。 
  
如果以前你接触过windows的逆向工程,那么对于android的逆向难度不大。首先谈谈最简单的dex程序逆向。 
  
第一种 dex程序其实就是java。google为了避免版权问题采用的一种技巧。java的逆向工程不用说,已经很成熟了。在java中大规模采用的混淆手段目前在android dex程序中采用得很少,也就是说,dex程序基本就是裸体,任人观赏。smali代码看看你就懂得。很简单,比如我自己写了ultraedit的高亮函数宏,很方便查找smali的函数。用Jgraph写个小程序画出函数内部流程。你懂的。 
  
第二种 就是NDK中的so文件的逆向,正如我前面说的。动态调试比较困难,理论上呢可以自己完全定制系统来实现动态调试,但是,的确没这么多精力。(如果你有时间和精力,可以完全定制一个系统实现兼容GDB的android内核)。那么就是以业界著名的IDA来静态分析。IDA最新版本支持率QEMU的代码段调试。希望将来我们能用上~~~ 那么IDA分析so 文件,根据我的经验,5.4以后的版本才对arm thumb指令处理较好。所以,请注意版本问题。一下就是对elf文件和arm code的理解和分析了。这个以后再说吧。 
  
以上是我对android 逆向工程的一点小小体会和理解,不乏很多错误,请谅解。希望能抛砖引玉。喜欢的朋友可以看看。 
  
BTW:以前写过一点android的汉化逆向之类的,随着时代的进步,工具是越来越多。逆向也越来越方便。但是,google已经开始了加密代码的工作,在market.android.com发布程序时候就能看到。需要紧跟时代啊。55,没钱买iphone来研究它的objectc arm代码了。

转载于:https://www.cnblogs.com/aiguozhe/p/4991490.html

android程序逆向工程相关推荐

  1. 给Android程序员的一些面试建议

    前言 应大家的邀请,写一篇关于Android面试相关的博客,需要说明的是本文只针对Android应用开发,不针对rom开发以及逆向工程.我想面试对于程序员来说是很重要的一件事件,面试结果的好坏直接决定 ...

  2. Android程序员的技术要求和学习路线

    转载自知乎上关于Android程序员技术等级标准的回答: 如上图所描述的技能要求,可分为下面几大模块: 通用知识 编程语言 Android 编码与设计 工具和方法 对应学习线路如下 书籍准备: 1.疯 ...

  3. Android 程序自动更新功能模块实现

    2019独角兽企业重金招聘Python工程师标准>>> Android 程序自动更新功能模块实现 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程 ...

  4. vs2015编译android,VS2015 Update2 构建 Android 程序问题汇总

    自VS2015起, Visual Studio开始逐渐内置支持跨平台开发, 并且Visual Studio团队还额外发布了一个编译工具集Clang with Microsoft CodeGen, 方便 ...

  5. Android程序员如何有效提升学习效率?帮你突破瓶颈

    背景 惯例,先简单陈述一下自己的,91年生人,164年三本毕业后在深圳工作,末流小公司,工资13k,无房,无车,无户口. 那时候感觉生活也还行,父母有退休金,我基本上不用太操心,女朋友在一起很久了,很 ...

  6. python开发安卓程序-python可以编写android程序吗?

    python可以编写android程序吗?答案是肯定的.Android不直接支持使用python开发应用,需要使用其它中间件或者库.PythonForAndroid.CLE以及Wrapandroid ...

  7. 比较windows phone程序启动和android程序启动原理

    windows phone 程序是如何启动的了,他和android程序有什么区别,我们重点从native code 层面来分析 在windows phone 程序启动的时候是: 在XAML中使用应用程 ...

  8. 手工编译Android程序

    手工编译Android程序   赖锋 我的china-unix博客 http://laiboy.cublog.cn 我的CSDN博客 http://blog.csdn.net/laiboy 程序描述 ...

  9. 给Android程序员的六个建议

    给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...

最新文章

  1. Gearman的使用
  2. DCMTK:演示状态查看器-后台打印程序
  3. MySQL模糊查询—between and关键字
  4. mysql主从复制排错
  5. 第43课 最大公约数 动动脑 第3题《小学生C++趣味编程》
  6. Spring全家桶——SpringCloud之Feign(Finchley版)
  7. VDI SolutionTrack - 上海站:11月20日
  8. python中mod运算符_自定义 Python 类中的运算符和函数重载(上)
  9. 国密算法和GmSSL介绍
  10. 中国地图经纬度范围,用多个矩形表示大致范围
  11. 数学建模【系统评价决策模型(概论、案例分析-汽车选购、层次分析法、案例分析-职员晋升、动态加权综合评价法、案例分析-大气污染问题)】
  12. 网络1711班 C语言第七次作业批改总结
  13. Python学习笔记——给图片格式转换器做个GUI
  14. PHP 接入微信公众账号API
  15. [ 高斯消元 二分图最大匹配 ] [ HEOI2013 ] BZOJ3168 钙铁锌硒维生素
  16. 棋类游戏-五子棋小游戏
  17. 「Adobe国际认证」运用“对象选择”工具,在PS中快速建立选区
  18. html escape unescape
  19. 孩子快抓住妈妈的手 -- 转载
  20. Oracle数据库的冷备份和热备份

热门文章

  1. WebLogic Clustering Overview Slides
  2. 无法打开登录所请求的数据库 sa。登录失败。 用户 sa 登录失败。
  3. 备份下ionic升级
  4. 句句真研—每日长难句打卡Day21
  5. CSS基本知识之盒子模型
  6. ChinaJoy是什么
  7. 什么是冬至?冬至的由来?
  8. 退休后,你是因为什么还要继续工作?做原来的工作还是做新工作?
  9. 你听过或见过最无耻的一句话是什么?
  10. 有20万3年不用,怎样理财呢?