防止/实现多开的原理:
程序在编程中通常使用互斥API函数防止多开。你运行程序,程序会在调用进程时检测程序是否已经运行,如果已经运行,则不再调用或终止新的进凳中程,返回到已经运行的程序界面,否则启动程序。
实现多开就是通过修改程序把其检测的返回值始终设置为程序未运行状态。
要自己实现多开的话,需要足够的汇编和解密知识,非三言两语可说清楚。
合同订立分为两个阶段:(一)要约。要约答陵又称为竖举散发盘、出盘、发价或报价等。根据《合同法》第14条规定,“要约是希望和他人订立合同的意思表示”。要约就是一方发出订立合同的意思表示,要约到达受要约人时生效,要约对要约人的约束力和对受要约人均具有约束力。(二)承诺。承诺又称为接受或接盘。根据我国《合同法》第21条的规定:“承诺是受要约人同意要约的意思表示。余氏”要约经受要约人承诺,表明当事人之间达成协议,合同即宣告成立。
所谓技术参观,指写给技术玩家观看和互相交流的文章。本文是关于同一个apk程序实现“双开”(实际是伪双开)的一些想法和实现。一、关于apk程序的双开
今天查邮件看到有人发邮件问我android下的阿里旺旺怎么双开。经过我的中外查证,貌视同个apk程序没有办法运
行多个实例,也就是同一个程序不能实现双开;同时同个程序也不能被安装二次,更进一步扼杀了双开的可能。于是那我唯一能想到的是:改apk,让
android系统认不出原版和改版是同一个程序。那么关键在哪里?android又是凭什么说这二个程序是相同的或不同的呢?网上一找无果。不过,以前
捣鼓的时候有注意一个问题,在 /data/data
文件夹下,这个地方会存在安装的程序数据,每个文件夹是这个程序的包名,换句话说,android之所以能区分二个程序是不是相同或不同就是看它们的包名
(PS:包是java中的一个编程概念)。
按照这种思路,要实现同一个apk程序的“双开”,我们可以把原程序的“包”给它改一下。比如,原包是com.z4mod.z4root
是z4root程序的包名,那我们就把它改成 net.z4mod.z4root
这样原版和改版就不在同一个包下了,android就会认为它俩可没关系,是二个程序,这样就能同时安装这二个程序,就能同时运行,就能实现“双开”(这
种当然只能算是伪双开)。
好吧,下面我就用我刚发布的 SD2Flash.apk 来演示这个“双开”功能(至于你想挂多个QQ、旺旺,我表示我不会再去深入研究“双开”的问题,参考我这篇文章或许会有点启发)。先帖个图吧。
有人说了,你这二个SD2Flash名字都不一样,不会是写了二个程序来晃点人吧?这个我表示绝对不是,这个任务名称也可以直接改,不过单改这种名称是实现不了“双开”的。详细修改教程参考下文。
二、修改过程(仅供参考)
这里用我的SD2Flash作为修改源,这个程序比较简单,不过万丈高楼平地起,我这个人又懒,我就在这里只打个地基了,其它程序可能会复杂点,比如包含多个包,那改起来有够麻烦的:
1、用Apktool反编译SD2Flash.apk,假设得到反编译目录 SD2Flash
2、编辑 SD2Flash\AndroidManifest.xml,将:
package="mandarava.android"
改成:
package="mandaravb.android"
这样一改主要是为了让改版程序的包名与原版程序的包名不一致,android系统就会认为是二个程序,这样就可以同时安装原版和改版,实现“双开”。(改的时候注意只稍微改个字母就行了,不要用添加或删除字母的方式,这样特别是针对.so的二进制修改有好处)
3、编辑 SD2Flash\res\values\strings.xml,将:
<string name="app_name">SD2Flash</string>
改成:
<string name="app_name">SD2Flash2</string>
这个是改程序名称。这样一改主要是为了让改版创建的桌面图标不会覆盖原版,因为如果快捷图标的名大败告称相同后装的会覆盖先装的。
4、接下来要将smali中所有包含有“mandarava/android/”的路径全部改成“mandaravb/android/”,这样与前面的改后的包名“mandaravb.android”相对应。这个用查找替换的方式,可以使用apk改之理快速替换。
另外,有些时候源代滚明码文枯行件中还会出现类似 mandarava.android 的包名情况,这些也要注意修改得与 mandaravb.android
一致。不过,SD2Flash 没这么复杂,没有这种情况;还有是有些程序带有.so文件的,如果也出现包关联的话,也要注意修改。
5、最后将 SD2Flash\mandarava 文件夹改名为:mandaravb ,这样与包名“mandaravb.android”也是保持一致。
改完成之后编译签名安装,会在桌面生成SD2Flash、SD2Flash2二个快捷图标,分别运行它们就可以实现伪“双开”。
我用的这个示例apk程序是很简单的,所以改起来没什么麻烦,不过如果其它的程序可能会遇到其它更多情况,比如可能包含.so文件,再比如程序有多个
包名的情况等等,我比较懒,我只抛砖引玉;我也不知道哪位想改阿里旺旺,我不去试了,如果你想改可以参考我这边的方法自己研究一下。不过我表示,这会挺麻
烦,改的时候要细心!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)