读书人

说说APK反编译(代码安插)的那点事

发布时间: 2012-06-30 17:20:12 作者: rapoo

说说APK反编译(代码插入)的那点事

很多人热衷于逆向工程,其过程中既可以学习作者的思路,又可以锻炼自己的能力,可谓是一举多得! 今天我来给大家伙介绍介绍我所了解的apk反编译的相关技术,和大家一起来做一个逆向工程.

? ?? ?? ?提醒:未经授权而逆向别人的程序是违法行为! 在此,我们只做学术研究,不搞破坏~

?

知识铺垫:

1.反编译的结果有两种,一种是smali (java机器码),还有一种是大家喜闻乐见的java代码形式.

2.apk文件其实是一个zip压缩包,里面的目录结构与android工程的结构很类似,其中我们的java源码(包括R.java)在classes.dex文件中.

3.期间的工具大部分是java写的,运行时需要具备java环境!

我先介绍大家喜闻乐见的形式吧,哈哈…

?

将apk反编译为源码.

需要的工具:

1.dex2jar. 说说APK反编译(代码安插)的那点事dex2jar-0.0.7.10-SNAPSHOT.zip (590.31 KB, 下载次数: 44) jd-gui-0.3.3.osx.i686.zip (689.59 KB, 下载次数: 39) AXMLPrinter2.zip (38.76 KB, 下载次数: 34) CMD100.demo.slipButton.rar (18.74 KB, 下载次数: 19) <manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="CMD100.demo.slipButton"
>
<application
??android:label="@7F040001"
??android:icon="@7F020000"
??android:debuggable="true"
??>
??<activity
? ?android:label="@7F040001"
? ?android:name=".Main"
? ?>
? ?<intent-filter
? ? >
? ? <action
? ???android:name="android.intent.action.MAIN"
? ???>
? ? </action>
? ? <category
? ???android:name="android.intent.category.LAUNCHER"
? ???>
? ? </category>
? ?</intent-filter>
??</activity>
</application>
<uses-sdk
??android:minSdkVersion="4"
??>
</uses-sdk>
</manifest>复制代码

源文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
? ?? ?package="CMD100.demo.slipButton"
? ?? ?android:versionCode="1"
? ?? ?android:versionName="1.0">
? ? <application android:icon="@drawable/icon" android:label="@string/app_name">
? ?? ???<activity android:name=".Main"
? ?? ?? ?? ?? ?? ?android:label="@string/app_name">
? ?? ?? ?? ?<intent-filter>
? ?? ?? ?? ?? ? <action android:name="android.intent.action.MAIN" />
? ?? ?? ?? ?? ? <category android:name="android.intent.category.LAUNCHER" />
? ?? ?? ?? ?</intent-filter>
? ?? ???</activity>
? ? </application>
? ? <uses-sdk android:minSdkVersion="4" />
</manifest> 复制代码

?

使用同样的方法把res/layout/目录下的布局文件也解码一下~在此我就不再赘述了.

?

接下来是dex文件的处理,需要用dex2jar工具处理转换一下.

先把工具解压出来,然后CMD切换到指定目录,运行如下命令:

dex2jar.bat [目录]\classes.dex

说说APK反编译(代码安插)的那点事??else
? ?Toast.makeText(this,"关闭了..." , Toast.LENGTH_SHORT).show();
}
}复制代码

?

?

?

P.S.其实这样获得的源码还是有一部分会出现错误啊~

?

=================分割线========================

?

将apk反编译为smali并插入自己的代码

用到的工具:

1.apktool.jar (或smali-1.2.6.jar & baksmali-1.2.6.jar) 说说APK反编译(代码安插)的那点事Apktool.zip (2.01 MB, 下载次数: 27) APK-sign.rar (1.66 MB, 下载次数: 33) 2011-7-8 20:41 上传下载附件 (7.76 KB)

?

成功弹出,哈哈...

?

至此,apk的反编译和代码插入就结束了.

借此方法,我们可以轻松的对apk进行DIY...

?

欢迎转载,但,转载请注明出处!

读书人网 >移动开发

热点推荐