首页
论坛
课程
招聘
[原创]javascript混淆还原方法探讨
2020-11-5 13:33 4313

[原创]javascript混淆还原方法探讨

2020-11-5 13:33
4313

对于web爬虫经验丰富的人来说这个并不算有难度的事情,但是对于熟悉安卓不熟悉web的开发者来说有些费劲,现在很多APP中webview使用率越来越多并且混淆也越来越强,毕竟脚本语言无法编译,只能通过伪编译或者混淆,今天分享一下一种案例来举例如何还原一个混淆js。

准备工具:charles,nginx,chrome,python

步骤:

      用抓包工具抓到相关网页地址,然后打开chrome浏览器点击F12键打卡开发者工具转化成模拟移动设备模式,然后访问。这是浏览器会加载所需的js代码和其他资源文件,

点击Source能看到所有的资源,到相应资源鼠标右键Save As就可以保存了。

保存的html和js代码放到nginx的html目录下,启动ngix,然后访问127.0.0.1:8089,端口在nginx.conf里自行配置。

如果js是压缩的就解压,把代码各行的显示这样下断点容易。

这个是一个抽出来的的验证码的webview

一看能看出来通过_0x2ef9函数隐藏了一部分api对象或者字符串函数名等,我们先用正则表达找到所有_0x2ef9函数的调用,然后参数全部列出来去重,然后js里调用console返回值。

这样就差不多走了80%的路程了。然后写一个脚本查找所有_0x2ef9函数替换解密出来的值就还原了隐藏的内容了,下一步就修复js了,这一步可能费点时间,不过会js的人基本上能确定那个是js的api,那个是字符串,不会的需要复习一下。

替换后的部分代码,觉得有希望了。

这是js混淆还原的一种解决办法,还有很多可以大家一起探讨,基本上搞过前端或者web的都会。


[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年6月班火热招生!!

收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 438
活跃值: 活跃值 (347)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_foyotena 活跃值 2020-11-5 22:19
2
0
在v8里dump是不是也是一种选择
雪    币: 112
活跃值: 活跃值 (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ogli324 活跃值 2021-1-29 18:25
3
0
上AST更优雅, 正则匹配方式很蛋疼的。
雪    币:
活跃值: 活跃值 (128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Qira 活跃值 2021-2-4 23:27
4
0
上次也遇到了类似的问题,也是跟楼主一样的想法,但是这么搞效率还是有点低下。
楼上的AST  应该是需要自己写解密方法的吧,遇到需要解密的节点就调用解密函数,有点类似于jeb 的脚本,不知道我理解的对不对。
雪    币: 4783
活跃值: 活跃值 (646)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
alphc 活跃值 2021-2-5 00:20
5
0
mb_foyotena 在v8里dump是不是也是一种选择
这是啥思路,可以展开说说吗
雪    币: 9
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
万里星河 活跃值 2021-2-16 10:35
6
0
支持一下
游客
登录 | 注册 方可回帖
返回