JavaScript逆向基础之手工还原混淆代码

  • A+
所属分类:安全文章



网安引领时代,弥天点亮未来





 

JavaScript逆向基础之手工还原混淆代码

0x00具体操作


1.以前为了调试代码自学的手工还原混淆代码,太久不用忘记的快差不多了,现在捡起来写个基础经验分享吧,这个是基础。


2.在渗透测试过程中,如果碰到混淆的代码,调试分析很困难,例如下面这些。

JavaScript逆向基础之手工还原混淆代码

JavaScript逆向基础之手工还原混淆代码


3.然后使用在线工具还原的解密还是很鸡肋。

JavaScript逆向基础之手工还原混淆代码

JavaScript逆向基础之手工还原混淆代码


4.这个时候需要手工还原和分析代码了,先格式化一下代码,看起来也舒服一点。

JavaScript逆向基础之手工还原混淆代码


5.先还原一下tipstime这个函数吧

JavaScript逆向基础之手工还原混淆代码


6.代码中大量的使用了__Ox6f8fd,其中__Ox6f8fd定义的是一个数组

JavaScript逆向基础之手工还原混淆代码


7.把这个数组复制到浏览器的控制台运行一下就行

JavaScript逆向基础之手工还原混淆代码


8.__Ox6f8fd[0x1]代表.timemsg,__Ox6f8fd[0x0]代表text

JavaScript逆向基础之手工还原混淆代码


9.然后第一行还原结果是如下

JavaScript逆向基础之手工还原混淆代码


10.然后写成人能看的懂的格式就是这样$(".timemsg").text(_0x81efx2);


11.第二行的if(_0x81efx2 == 20)这个不用管,因为_0x81efx2就是个传参名称而已,别想太多,这个没有混淆。


12.第三行$(__Ox6f8fd[0x3])[__Ox6f8fd[0x2]]();其中__Ox6f8fd[0x3]代表.tips,__Ox6f8fd[0x2]代表hide

JavaScript逆向基础之手工还原混淆代码


13.第三行的还原结果如下

JavaScript逆向基础之手工还原混淆代码


14.写成人能看的懂的就是$(".tips").hide();


15.第四行

 (1)__Ox6f8fd[0x5]代表.timeout

 (2) __Ox6f8fd[0x4]代表show

JavaScript逆向基础之手工还原混淆代码


16.第四行还原结果如下

JavaScript逆向基础之手工还原混淆代码


17.写成人能看的懂就是这样$(".timeout").show()


18.最后tipstime函数完整的代码就是这样

JavaScript逆向基础之手工还原混淆代码


19.如果看_0x81efx2不顺眼,那我就全部替换成变量名称time,这下舒服了吧

JavaScript逆向基础之手工还原混淆代码


20.接下来就是NXplayer函数了

(1)navigator[__Ox6f8fd[0x7]][__Ox6f8fd[0x6]](/iPad|iPhone|iPod/i)

(2)navigator[__Ox6f8fd[0x7]][__Ox6f8fd[0x6]](/iPad|iPhone|Android|Linux|iPod/i)


21.Navigator 对象是由 JavaScript runtime engine 自动创建的,并不是用户自己创建的


22.__Ox6f8fd[0x7]代表userAgent,__Ox6f8fd[0x6]代表match

JavaScript逆向基础之手工还原混淆代码



23.所以NXplayer函数第一行和第二行还原结果如下

JavaScript逆向基础之手工还原混淆代码


24.写成人能看的懂是

(1)navigator.userAgent.match(/iPad|iPhone|iPod/i) != null;

(2)navigator.userAgent.match(/iPad|iPhone|Android|Linux|iPod/i) != null;

JavaScript逆向基础之手工还原混淆代码



25.把上面这些操作自动化,先遍历数组,提取混淆之前的字符串,然后用混淆之前的字符串去替换代码中混淆之后的字符串,这样自动去除混淆脚本基本完成了


26.为什么说基本完成,因为只是替换了字符,很多语法问题还需要细调,我就不写了。。。。。。。。。主要还是嫌麻烦,路还很长呢。

JavaScript逆向基础之手工还原混淆代码


27.这个已经是很简单的案例了,碰到更复杂的混淆和加密,时间要花的更多的哦。


28.欢迎加入弥天实验室

JavaScript逆向基础之手工还原混淆代码







JavaScript逆向基础之手工还原混淆代码 

知识分享完了

喜欢别忘了关注我们哦~



学海浩茫,

予以风动,
必降弥天之润!


   弥  天

安全实验室

JavaScript逆向基础之手工还原混淆代码

本文始发于微信公众号(thelostworld):JavaScript逆向基础之手工还原混淆代码

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: