App反编译小结

我一个朋友,他上班就是去客户那拜访,晚上回公司开开会。之前他很少去拜访,但是最近他们公司做了个app,必须去拜访的客户那里打卡才行。

作为一个程序员,本着科技改变生活的理念,我决定来反编译一下这个app。

第一步当然是查看源码。

查看源码的话,需要用到dex2jar和JD-GUI。

将app直接解压,会生成一个classes.dex文件,这里文件里面的就是app的代码了。但是想看到代码的话,还是需要几个步骤的。

首先,将classes.dex文件放入下载好的dex2jar文件里,在该目录下使用用命令“dex2jar.bat    classes.dex”,这时在dex2jar目录下会生成classes.dex.dex2jar.jar文件。

拿到这个文件后放入JD-GUI下就能看到源码了,如下图所示:

这个时候你会发现,他妈的,代码做了混淆!!!

不要着急,我们慢慢看,因为您急也没啥用。

其实稍微观看下就不难发现,com下面的才是开发这个app的程序员所写的代码,其他的几个不是jar包就是libary。至于怎么找到你需要的代码逻辑,我下面再说。

这里我已经找到了判断是否在指定区域的代码

呐,可以看到,这里是用的百度地图的lbs来定位的。先别高兴的太早,这里是不能修改代码的。要修改源码,需要用到apktool。

修改app代码

将apk文件和apktool放在同一目录下,执行“java -jar apktool.jar d apkname.apk ”,执行完后会在该目录下生成一个和apk名称一样的文件夹,打开后,smali文件夹里就是反编译好的代码了,不过是smali文件而已。要想修改app里的代码逻辑,只能先学会smali~~~至于smali的语法,自己百度去吧。

上面提到过如何查找你需要的代码片段,可以在编译出来的AndroidManifest.xml里快速的找到相关的activity。细心的朋友会发现,直接解压apk文件也会有AndroidManifest.xml文件,但是没有反编译,保证你看不懂。这里是经过反编译的,和我们平时写的几乎没有偏差。而且这里面还有xml文件,这样以后方便的借鉴别人的布局了,哈哈哈~

好了,扯远了。我本来的意图是第一次去正确的地点打卡,并且记录下当前的位置信息,下次就跳过判断,直接上传上次记录下的位置。其实很简单的,然是用smali写就麻烦了,测试也是个大问题。后来我就想,如果把判断的这个逻辑给删掉呢,写不来,删还是挺容易的。但是缺点显而易见,就是还是会上传实时的位置信息。因为我实在不想写smali,所以就直接和朋友说明情况,他说无所谓,公司全国人那么多,不会查的。那行,我们进入下个步骤。

重新打包

重新打包用的还是apktool,在apktool的目录下,输入命令“java -jar apktool.jar b foldername new.apk”,foldername为上个步骤反编译出来的文件夹,执行成功后,在foldername文件夹里的dist文件里有个apk,这个apk就是重新打包好的app。这时先别着急装上手机,因为装不上的,你的apk文件还没有签名。
想要获得原来的签名文件是不大可能了,怎么办呢。我们可以做个假的签名嘛~

这里我用的是Auto-sign,把重新打包后的apk文件放到Auto-sign文件下,执行命令“java -jar signapk.jar testkey.x509.pem testkey.pk8 new.apk new_signed.apk”。new.apk代表的是你打包好的apk文件,new_signed.apk为签名过的apk文件。

至此,所有的工作完成,接下来要考虑的就是敲朋友一顿饭的事了。

其实这篇文章干货不多,在网上都能找到的,写上原创也是我皮厚,哈哈哈~~~~



结尾贴上郭婶的博客,早点看到这博客我就不写了。。。

Android安全攻防战,反编译与混淆技术完全解析(上)

Android安全攻防战,反编译与混淆技术完全解析(下)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值