很多人热衷于逆向工程,其过程中既可以学习作者的思路,又可以锻炼自己的能力,可谓是一举多得! 今天我来给大家伙介绍介绍我所了解的apk反编译的相关技术,和大家一起来做一个逆向工程.
提醒:未经授权而逆向别人的程序是违法行为! 在此,我们只做学术研究,不搞破坏~
知识铺垫:
1.反编译的结果有两种,一种是smali (java机器码),还有一种是大家喜闻乐见的java代码形式.
2.apk文件其实是一个zip压缩包,里面的目录结构与android工程的结构很类似,其中我们的java源码(包括R.java)在classes.dex文件中.
3.期间的工具大部分是java写的,运行时需要具备java环境!
我先介绍大家喜闻乐见的形式吧,哈哈…
将apk反编译为源码.
需要的工具:
证据存在瑕疵证明:
我现在将原先那些删除,然后修改插入一些新的内容:
不过我们关注的是smali文件夹,打开看看,里面的目录结构和源码的目录结构是一致的!
找到要修改的地方.在这个例子里,就在Main.java(第一个载入的activity)的OnCreate方法里插入一段代码吧!
打开 Main.smali