反编译任何⼩程序,以及独⽴分包、插件的处理⽅式
本篇⽂章将详细讲解如何对线上的⼩程序进⾏解包反编译,并处理独⽴分包加载、插件等情况下的解决⽅法,最终获得他的源码以⽤来学习,没错,就是学习。 本教程也仅⽤于学习。
所谓⼯欲善其事,必先利其器,我们先来准备⼀下需要准备的东西:
获取需要反编译⼩程序的包
1. ⾸先,要想反编译获得⼩程序源码,那我们必须先有这个⼩程序的⼀个包,那我们应该怎么去获取这个包呢?我们需要⼀台
具有ROOT权限的⼿机,但在9012年了,ROOT的⼿机应该很少了吧,那么我们可以通过Android模拟器来实现这⼀步。这⾥我推荐夜神模拟器,因为他对权限、⽂件的的管理会⽐较⽅便。
2. 我们先打开模拟器或⼿机,因为⼿机⾃带的浏览器看不到⼀些隐藏的⽬录,所以我们下载RE浏览器,这也是要求ROOT权限的原因。
打开RE浏览器,确认权限正常,进⼊/data/t.mm/MicroMsg/appbrand 下,你会看到⼀个类似
a8b3488516c9d81e1d5f511891583cf9 的⽂件夹,这个是以⽤户来分类的,如果有多个,可以全删掉,进⼊
a8b3488516c9d81e1d5f511891583cf9 ⽂件夹下,进⼊pkg⽂件夹下,这个⽂件夹就是⽤来防⽌⼩程序包的,后缀为**.wxapkg**的就是⼩程序的包,建议除了最⼤的那个(⼤概7-8M左右)包,其他的全部删掉,⽅便后续到我们所需要的包。
3. 准备⼯作完成后,我们打开,打开想要反编译的⼩程序,这是pkg⽬录下会出现⼀个新的wxapkg包,将这个包复制到电脑上。夜
深模拟器的话可以通过共享⽂件夹实现。
反编译前准备
1. 安装node.js(傻⽠式安装,不做讲解)
2. 使⽤CMD命令⾏进⼊到我们所下载的反编译脚本⽬录,依次输出⼀下指令安装依赖:
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
安装完成后我们就可以正式开始反编译我们的⼩程序了
1. 建议将⼩程序的包放在⽐较好操作的位置,例如磁盘更⽬录或脚本的⽬录,⽅便后续操作
2. CMD进⼊脚本⽬录,使⽤指令node wuWxapkg.js C:\1.wxapkg对⼩程序包进⾏解包,其中,C:\1.wxapkg为所需要解包的⼩程
序。
3. 如果不出任何BUG的话在包的⽬录下会出现⼀个包名的⽂件夹,这个⽂件夹就是最终反编译的源码了。
写文章的小程序4. 如果⼩程序中有独⽴分包,那我们应该进⾏⼀下操作:
1. 获得要解包的主包和⼦包
2. 解包主包 bingo.sh testpkg/master-xxx.wxapkg
3. 解包⼦包 bingo.sh testpkg/sub-1-xxx.wxapkg -s=../master-xxx 其中,sub-1-xxx.wxapkg为⼦包wxapkg,-s=后⾯为⼦包在主包中的路径
5. 当然,也可以直接解包主包和⼦包,然后把主包中⼦包的⽂件替换掉就⾏了。
常见问题解决
BUG1 # $gwx is not defined
使⽤编辑器打开 wuWxss.js ⽂件,到 runVM 函数,将函数内容替换成:
let wxAppCode ={};
let handle ={cssFile: name};
let gg =new GwxCfg();
let tsandbox ={
$gwx: GwxCfg.prototype["$gwx"],
__mainPageFrameReady__: GwxCfg.prototype["$gwx"],//解决 $gwx is not defined
__vd_version_info__: GwxCfg.prototype["$gwx"],//解决 __vd_version_info__ is not defined
__wxAppCode__: wxAppCode,
setCssToHead: cssRebuild.bind(handle)
}
let vm =new VM({sandbox: tsandbox});
vm.run(code);
for(let name in wxAppCode){
dsWith(".wxss")){
handle.cssFile = solve(frameName,"..", name);
wxAppCode[name]();
}
}
重新编译⼀下就好了。
BUG2: no such file or directory, open ‘…\plugin:\wxa75efa648b60994b…json’ ,也就是插件报错。
这个问题是你遍全⽹,也不会有⼈告诉你的,反正我解决的时候,是baidu、google都遍了,也没到解决⽅法,⽹上全是⼀些复制站贴的基本内容……
其实这个问题很好解决,⾸先我们看报错信息,no such file or directory, open ‘…\plugin:\wxa75efa648b60994b…json’,你品,你细品,话说**\plugin:**这个⽬录是啥,也就是这个⽬录的原因,造成了博主在百度和⾕歌上了半天的答案,最后还是靠⾃⼰解决了。
在Windows系统中,并⽀持以 : 命名的⽂件夹,所以对应的plugin⽂件夹被系统重命名成了“plugin”,所以程序不到这个⽂件夹,惊不惊喜,意不意外,解决⽅式也很简单。解决的⽅式有两种:
1. 修改脚本中内容,将plugin: 修改成其他格式。(这⽅式⽆效,不能通过脚本修改了,那个plugin:其实是那个wxapkg⾥⾯的东西,如果⼩程
序引⽤了第三⽅插件的话,就会有这个⽂件夹)
2. 将⽂件和脚本放到Linux上执⾏,因为Linux就没这么多屁事。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论