吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17895|回复: 34
收起左侧

[Android 原创] 【已失效】【反编译】apk反编译之修改贴吧发贴回帖时显示的地理位置

  [复制链接]
我有一只连营鹿 发表于 2014-11-24 17:53
本帖最后由 我有一只连营鹿 于 2015-5-31 10:37 编辑

这两天看了下反编译,试了试反编译百度贴吧客户端修改发贴回帖时显示的地理位置,也算是达到效果了。在这里记录下过程跟大家分享下,上效果图先



这次用到了几个软件,包括:ApkTool、dex2jar、jd-gui、notepad++,当然还有百度贴吧的apk。


ApkTool可以将apk进行反编译和回编,楼主用的小拽的一键apktool,直接百度随便下的,其他的版本应该用法差不多。使用apktool将贴吧客户端反编译出来,结果如下图。在apktool的目录下多了一个跟贴吧apk同名的目录,放着反编译出来的东西


打开这个文件夹,目录结构如下图,/res/drawable-hdpi/目录下面是程序主要的图片ui,smali目录下是被处理过的代码,其他目录不用管


那么开始行动吧,要改变地理位置首先要在代码中找到处理地理位置的代码。茫茫代码还是处理过的蛋疼虚拟机指令语言,找起来肯定费劲,还好有notepad++,这个软件有个强大的搜索功能,可以在指定文件夹中搜索出来你要找的那几个字!
那搜索什么字呢,把玩一下度娘客户端,发现回帖的时候如果开了定位上方会出现这一行字,那是不是可以搜索一下这行字左边那张图片的名字,来找找呢?


楼主去/res/drawable-hdpi/目录下面找,发现特么的好几张那个图片。。看不出来啊区别有木有!楼主也懒得一个个试了。。这张不行不是还有很多别的图片嘛。楼主又把玩起度娘,。恩。。度娘客户端,发现点击一下定位那行字,会跳到一个选择位置的界面,列出定位附近的位置,这个界面只有一个图片有木有!就是那个对号!找起来应该比较容易。


楼主又到/res/drawable-hdpi/目录下面开始找,发现真的好想只有一张的样子,叫icon_site_ok.png,而且site不就是位置的意思嘛,这个图片应该就是我们要找的。


于是使用notepad++,在反编译出来的smali文件夹所在的目录来搜索这个文件名,得到如下图这条结果



找是找到了,但是这虚拟机指令语言这么蛋疼,改哪里怎么改呢。。还是把代码换成亲切的java来看吧。好像是有把smali直接转换成java的工具,不过楼主没研究过,这里楼主用的是把.dex文件转化为.jar文件,然后用jd-gui来看jar里面的代码。

直接将度娘客户端后缀改为zip解压出来,得到一个classes.dex文件,把这么文件放到dex2jar的目录。接着打开命令行,cd到dex2jar的目录下,然后输入dex2jar.bat classes.dex,中间有空格,等到提示Done就说明转换完成了。如果提示什么java不是可执行的之类就是电脑上没有装JDK或者JAVA环境没有配置。


得到了jar,也没法直接查看代码,需要使用一个叫jd-gui的工具,而且这工具也是只能看不能改,不过好歹能看不是么~

使用jd-gui打开刚转换的jar,得到下图这样的目录结构


按照刚才搜索出来的路径,楼主这里是\baidutieba_100927744\smali\com\baidu\tieba\selectpoi\c.smali,应该差不多,我们就顺着这个路径找到在jd-gui中寻找c.smali,jd-gui里看不到扩展名(况且这时候扩展名也不是.smali了),所以找到c就好了。


使用jd-gui看到的代码也是混淆后的,虽然不如源码直观易懂,不过比smali好看多了。我们看到这个类继承自BaseAdapter,学过安卓肯定知道这是个适配器,我们在度娘客户端看到的地理位置列表就是由它适配而来。看到代码中有个SelectLocationActivity,这个应该是使用适配器的Activity,我们可以在这个Activity中找到使用适配器的ListView,看看它的Item监听事件里都做了什么


这里我们找到了它的监听事件,可以看到当paramInt = 0的时候new了一个ResponsedSelectLocation发送出去了,第一个参数是false,应该是不显示地理位置的意思。而在paramInt不等于0的时候也new了一个ResponsedSelectLocation,但这次传了3个参数,第一个是true,大概就是显示地理位置,而第二个是个String类型,极有可能是要显示的名称,我们就要在这个参数上下功夫了。


找到了要改的位置,就要改smali文件夹中的东西了,我们按照这个路径找到\smali\com\baidu\tieba\selectpoi\b.smali,用notepad++打开b.smali这个文件。我们看到smali调用了getName()方法,然后把返回值给了v4,又在下面的构造方法中使用了v4,可见这几行就对应着上面的java代码。


现在问题就简单了,我们只需要在它使用v4之前,自己定义一个v4然后赋上我们指定的值给它用就行了。在smali中不能直接写中文,需要把中文unicode编码一下,百度unicode有很多在线编码的工具,如下图,我们把自己想要的地址编码一下


接着如下图,我们加上这句代码const-string v4, "\u592a\u9633\u7cfb\u002e\u706b\u661f\u002e\u7f8e\u7d22\u4e0d\u8fbe\u7c73\u4e9a\u5e73\u539f",把画蓝线的部分就是双引号引起来的地方去掉,换成自己想要的编码好的地址就行。修改完后按一下Ctrl+S保存,大功告成!


改了代码之后,要想让这代码在手机上运行起来还需要把反编译出来的东西回编回去,ApkTool就有这个功能。楼主这里编译完成后的apk就在 \apktool\回编apk生成目录下。


但是这个apk还不能直接在手机上安装,因为它没有签名。有的版本的apktool就带有签名功能,楼主的这个正好没有。。。所以楼主用的是eclipse签名,把这个apk拿去签名就会得到一个签名后的apk,把签名后的apk复制到手机上就可以直接安装啦!

P.S. 如果手机上已经安装了贴吧客户端,就会因为签名冲突无法安装现在自己的这个,解决办法就是卸载掉原来安装的。。。。或者找一个没有安装过贴吧的手机来安装~安装成功后发帖回帖时会先定位当前位置,不用管他,点击定位的那行小字在新跳转的界面里随便选择一个地址就行,选择完后就会发现定位的字已经变成我们自己写的字啦!


点评

暂时不回收,请楼主补一下图吧  发表于 2014-11-24 17:55

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 我有一只连营鹿 发表于 2014-11-24 19:34
000000 发表于 2014-11-24 18:37
图挂 建议楼主右键另存为 然后上传到图床里 免费图床百度大把的

谢谢,刚来论坛不知道,还有图床一说,现在图片应该好了吧
 楼主| 我有一只连营鹿 发表于 2014-11-24 19:37

我的效果图有两张,编辑的时候看也是两张,怎么发出来了一直只有一张。。。你看是几张?
锄禾日当午 发表于 2014-11-24 17:56
 楼主| 我有一只连营鹿 发表于 2014-11-24 17:57
为什么图片都变成这样了。。。
刘宇帆 发表于 2014-11-24 18:03
楼主你是搞慈善的吧
21882068 发表于 2014-11-24 18:06
没图怎么看啊!请把图补上!
huangchao209 发表于 2014-11-24 18:23
上传图片到论坛,再发别引用百度的
ffsetup 发表于 2014-11-24 18:26
图片全挂了
Avenshy 发表于 2014-11-24 18:37
图挂 建议楼主右键另存为 然后上传到图床里 免费图床百度大把的
职业捡漏 发表于 2014-11-24 18:40
挂图。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-11 04:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表