修改smali文件经验

关键词:smali文件  电话拦截  短信拦截  jar包反编译


2014年做了个项目,实现Android手机拦截电脑,和短信。 就是隐私电话(或短信)来了后,手机界面上不显示。

利用一个伪装信息显示。例如在任务栏显示一个特殊新闻,其实是一个隐私电话打过来了。
像这样项目可以用在特殊场合,例如刑警办案,特工人员等,或者你想一些特殊电话不想别人看到。


我们先开始用广播消息去发现电话过来,并拦截。也能工作。 但发现有两个问题。来电时屏幕会闪一下。
还有如果手机装了360软件,或者百度卫士,他们这些软件会有拦截记录。这样就失去了隐私的目的。即使我们
将广播权限接受权限设为最高,也不能解决这个问题。


为了彻底实现隐私,后只能去底层解决这个问题。就是修改ROM包,在系统层拦截电话。 后这个问题解决。
但这种方案也有弊端,就是用户手机要重新刷机,以前装的软件可能都不在。
也有好处:用户手机不需要Root的,用户不管装了什么杀毒软件,都能实现拦截电话或短信,不留一点痕迹。


这种方案针对每个手机都要定制Rom的,工作量大也是可想而知的。


现在说说怎样修改Rom。


在网上下载指定型号手机的Rom,得到要修改的jar文件,反编译,得到一堆smali文件,将自己要加的逻辑先用java写,函数写在public static 静态函数,任何函数都可以调用,这些静态函数都放在一个java文件里里,然后这个java文件放到安卓源码里,mmm编译,得到jar包,然后反编译,得到这个java文件对应的smali文件,将这新的smali文件加到原来的一堆smali文件里,加几行代码就行了,调用静态函数。

 网上用个smali的UltraEdit的插件,安装到UltraEdit里面以后,修改smali很方便。 在原有的smali文件里不能增加一个新函数,不然打包时不能通过。按照上面的方法把自己的逻辑专门写到一个smali文件里,在其它smali文件里调用这个新smali文件的函数,这样就实现把自己的逻辑加到原有逻辑里。最后再打包形成新的jar 文件,放到Rom包里,再给用户刷机,就可以实现拦截电话和短信。



写smali文件是个很累的事,可以下载Android源码,因国内对Google封闭,用VPN下载,把自己的逻辑用java代码写到一个新文件里,里面函数做成static类型的,这样任何地方都可以调用这个函数。然后在Android源码里把它编译成jar包,用mmm命令,编译很快。
再把这个jar包反编译,就得到你刚才写的java文件的smali文件。


我们这个方法在Android 4.4.4,Android 4.0,Android 2.3里面试了,都可以运行。


smali文件相当于汇编语言,慢慢看也能看明白的。网上有专门smali语法介绍的。


调试的时候,将手机设成Recovery模式,可以很快刷一个jar包刷到手机里去,手机重启就可以工作。 smali里面可以加上输出日志信息,通过abd log命令看到底层代码运行情况。



2015年6月6日 上海




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值