[原创]记一次APP脱壳重打包过程
2017-12-29 09:39
309 查看
小伙伴分享了一个开车软件,但是有播放次数限制。对此小伙伴放言要制裁它,无奈APP加固了。
咳咳,本着学(wei)习(le)研(fu)究(li)的态度,尝试着脱壳并重打包。
为证清白,伸出双手,上操作。
右键直接解压APK,查看特征是360加固:
使用apktool工具反编译APK作为我们的工程目录(能成功运气还不错):
总结下大致思路:
脱壳拿到DEX ---
替换smali源码
--- 修复AndroidManifest.xml ---
重打包 --- 签名运行
一、脱壳获取DEX文件
看特征是360加固,用我之前的方法脱之(http://bbs.pediy.com/thread-219227.htm),拿到两个dex,分别改名classes.dex,classes2.dex。
使用baksmali反编译,由于是两个dex,分别修改下目录名,并替换:
classes.dex -> smali/
classes2.dex -> smali_classes2/
二、修复AndroidManifest.xml
修复AndroidManifest.xml,修改内容包括还原application入口,主activity,删除无用的组件。
1、
查看smali,结合APP包名,确定原application类为
2、修改” application”节点”android:name”:
改为
删除属性“android:protect”
3、修改主activity
的 “.DEFAULT”为“.LAUNCHER”
4、删除所有“com.stub.stub*”的组件。
如:
三、重打包、并签名运行
修改替换后,我们得到以下目录:
使用apktool打包试试,打包成功了(哦也)。
签名完、安装启动APP看看情况。
果然,启动就闪退了。(果然考驾照没那么简单)
现在,咱们要确定是什么原因造成了闪退,最直接的方法就是动态调试APP。
四、调试APP
使用IDEA + smalidea调试APP(参考http://www.52pojie.cn/thread-502219-1-1.html)。
那么下段点-> F8->F7->下段点
…… 不断跟踪代码
最终确定退出的地方:
由于咱们删除了壳的相关代码,这里就找不到com.stub.StubApp类了,所以删除之。
重新打包安装,运行成功!
嘿嘿,学(xing)习(fu)到(sheng)此(huo)结(lai)束(le)。
总结:这次重打包还是挺简单的,没有遇到反编译工具对抗,签名校验,native onCreate等,算是运气不错。样本就不放了,怕(liu)被(zhe)河(si)蟹(yong)。
咳咳,本着学(wei)习(le)研(fu)究(li)的态度,尝试着脱壳并重打包。
为证清白,伸出双手,上操作。
右键直接解压APK,查看特征是360加固:
使用apktool工具反编译APK作为我们的工程目录(能成功运气还不错):
总结下大致思路:
脱壳拿到DEX ---
替换smali源码
--- 修复AndroidManifest.xml ---
重打包 --- 签名运行
一、脱壳获取DEX文件
看特征是360加固,用我之前的方法脱之(http://bbs.pediy.com/thread-219227.htm),拿到两个dex,分别改名classes.dex,classes2.dex。
使用baksmali反编译,由于是两个dex,分别修改下目录名,并替换:
classes.dex -> smali/
classes2.dex -> smali_classes2/
二、修复AndroidManifest.xml
修复AndroidManifest.xml,修改内容包括还原application入口,主activity,删除无用的组件。
1、
查看smali,结合APP包名,确定原application类为
2、修改” application”节点”android:name”:
改为
删除属性“android:protect”
3、修改主activity
的 “.DEFAULT”为“.LAUNCHER”
4、删除所有“com.stub.stub*”的组件。
如:
三、重打包、并签名运行
修改替换后,我们得到以下目录:
使用apktool打包试试,打包成功了(哦也)。
签名完、安装启动APP看看情况。
果然,启动就闪退了。(果然考驾照没那么简单)
现在,咱们要确定是什么原因造成了闪退,最直接的方法就是动态调试APP。
四、调试APP
使用IDEA + smalidea调试APP(参考http://www.52pojie.cn/thread-502219-1-1.html)。
那么下段点-> F8->F7->下段点
…… 不断跟踪代码
最终确定退出的地方:
由于咱们删除了壳的相关代码,这里就找不到com.stub.StubApp类了,所以删除之。
重新打包安装,运行成功!
嘿嘿,学(xing)习(fu)到(sheng)此(huo)结(lai)束(le)。
总结:这次重打包还是挺简单的,没有遇到反编译工具对抗,签名校验,native onCreate等,算是运气不错。样本就不放了,怕(liu)被(zhe)河(si)蟹(yong)。
相关文章推荐
- 【转】.net core 一次坑爹的类库打包过程
- 一次渗透测试过程--从外网进内网(原创)
- .net core 一次坑爹的类库打包过程
- 如何手动完成一次APK打包?----APK编译全过程
- [原创]记一次java执行段错误及解决过程
- 记一次android程序反编译并二次打包的过程
- [原创]一次网络设备(cisco3660)模块扩展升级调试过程
- (原创)Linux内核升级全过程 手把手教你一次成功(2.4.20-8到2.6.18)
- 如何手动完成一次APK打包?----APK编译全过程
- 记一次打包源码的过程
- 记录一次公选课刷课过程,由抓包到代码实现【原创,转载请说明】。
- 使用Wireshark来检测一次HTTP连接过程
- 记一次用java实现ftp过程的问题
- 简记:一次修复CentOS7因卸载多余内核后引起启动文件丢失及其后续问题的过程
- ios打包上传导致ERROR ITME-90205和ERROR ITME-90205错误的解决过程
- 对Group By 语句的一次优化过程
- 一次查询耗时的分析过程
- Ant详细打包过程
- 【原创】对于一些Android开发过程中坑爹、细小,但又重要的错误的总结
- 记一次neo4j项目打包出现的问题