资讯专栏INFORMATION COLUMN

Android逆向工程 实践篇 二

blankyao / 2057人阅读

摘要:逆向工程实践篇二今天做了一个小实验随便下载了一个替换首页的图片原来的是静态的图片我要给它换成网络动态加载的图片六步骤用把反编译找到启动的修改资源写图片加载的代码测试打包收工一解包把下载好的使用工具解包二找到启动的页面首先大家应该看确定第一个

Android逆向工程 实践篇 二

今天做了一个小实验. 随便下载了一个apk.替换首页的图片, 原来的apk是静态的图片. 我要给它换成网络动态加载的图片.

六步骤:

1: 用ApkIDE把apk反编译.

2: 找到启动的Activity.

3: 修改资源.

4: 写图片加载的代码.

5: 测试.

6: 打包,收工.

一: 解包

把下载好的apk使用工具解包.

;

二: 找到启动的页面

首先,大家应该看AndroidManifest.xml确定第一个界面是哪个Activity.

;


图片中圈出来的地方是标志为启动app的时候第一个启动的页面, 既然我们是要修改启动的图片,那么肯定是重这里入手. 这个Activity名字叫: loginActivity, 我们打开这个看看.

三: 改资源

在看Activity之前我们应该先去它的xml布局里面看看有什么东西.







运气还不错. 一下子就找到了启动的时候加载的图片了. 我圈出来的地方就是加载在首页的图片. 我们想改掉这个图片. 那么就需要在启动的时候用代码从网络上面下载图片加载到这个控件上. 那么...懵逼了..得去看看LoginActivity的smali了.我门先定位初始化控件的地方.一起来看代码把...

为了可以在首页上加一个图片显示, 我需要在xml里面有一个图片显示的控件,大家注意到了有一个ImageView控件, 这个控件正好加载我们的网络图片.而我看了LoginActivity的代码后, 实际上这个控件是没有被使用的.着正和我意..



得到了控件的id, 我们就来一个搜索大法.



得到id的十六进制值后我们再搜索一次.



工具用得真爽...



这里是初始化控件的地方.

const v0, 0x7f0c0085

invoke-virtual {p0, v0}, Lcom/iptv/romance/LoginActivity;->findViewById(I)Landroid/view/View;

move-result-object v0

check-cast v0, Landroid/widget/ImageView;

iput-object v0, p0, Lcom/iptv/romance/LoginActivity;->R:Landroid/widget/ImageView;

很简单, 只有5句话

第一句:控件的十六进制id值.赋值给v0.
第二句:通过id去找到控件.p0是上下文.
第三句:把找到的结果返回到v0上.
第四句:将v0寄存器中的对象引用转换成指定的类型. 就是图片控件了.
第五句:R就是我们的imageView控件了.这个时候我们已经找到了我们需要显示图片的控件. 下一步就是把网络上的图片显示到控件上.因此我开发了一个imageLoad类来实现这个功能.

四: 写代码

;

截图上面的3个类实际上是一个imageLoad.java被编译后生成的imageLoad$1$1/imageLoad$1 这2个是内部类.
我们这样使用.

;

直接把方法写成静态的,方便调用. 图中圈出来的就是加载图片的方法. 参数1: 上下文. 参数2: 图片对象.
把控件传进去,下载好图片后直接显示在控件上就完成了我们的事情了...

五: 运行测试

我这里的网络令我抓狂...所以随便测试一下.(图片是gif不知道能不能播放.)

六: 打包

打包直接使用ide打包. 打包后会生成一个apk.

原来的样子

现在的样子

到这里为止,这个apk已经搞定了. loadImage具体实现就不说了.很简单..就是下载一个图片加载到控件上面.

谢谢!!
csdn:http://blog.csdn.net/qq541159192
简书:http://www.jianshu.com/p/f889...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67246.html

相关文章

  • Android自定义Lint实践()

    摘要:自定义方案提供了一种思路将放到一个中。这样我们就可以针对工程进行自定义只对当前工程有效。开发插件后,继承了原生和自定义的所有检查规则,内置。我们创建一个内部类来表示检查树的过程。 为什么需要自定义 原生Lint无法满足我们团队特有的需求,例如:编码规范。 原生Lint存在一些检测缺陷或者缺少一些我们认为有必要的检测。 自定义方案 LinkedIn提供了一种思路 : 将jar放到一个...

    luffyZh 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<