mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-22 04:10:25 +08:00
学习js逆向笔记
This commit is contained in:
parent
53c3b58cba
commit
6352281fd5
11
zy-常见混淆原理/AA和OO混淆.md
Normal file
11
zy-常见混淆原理/AA和OO混淆.md
Normal file
@ -0,0 +1,11 @@
|
||||
# js 默认支持unicode
|
||||
|
||||
原始代码
|
||||
|
||||
var ayf = 1;
|
||||
|
||||
AA加密
|
||||
|
||||
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`sojson.com*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚])(゚Θ゚))((゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚)+(゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚o゚]);
|
||||
|
||||
测试网站: https://www.sojson.com/aaencode.html
|
49
zy-常见混淆原理/eval混淆.md
Normal file
49
zy-常见混淆原理/eval混淆.md
Normal file
@ -0,0 +1,49 @@
|
||||
# btoa 和 atob
|
||||
|
||||
* btoa 编码
|
||||
* atob 解码
|
||||
|
||||
编写加密程序,这样变量 ayf 和 BCM 就被加密了
|
||||
|
||||
// YXlm == ayf, QkNN == BCM
|
||||
var xxx = ['YXlm', 'QkNN']
|
||||
|
||||
var ayf = 1;
|
||||
var BCM = "0";
|
||||
|
||||
|
||||
// atob解码
|
||||
function x1(id){
|
||||
return atob(xxx[id])
|
||||
}
|
||||
|
||||
// 混淆的变量名称
|
||||
console.log(window[x1(1)]);
|
||||
|
||||
# eval混淆
|
||||
|
||||
我们知道浏览器自带v8引擎,eval的作用其实很简单,就是把一段字符串传递给v8引擎,由v8引擎将这段字符串解释成Javascript代码,并且执行他。
|
||||
|
||||
<script type="text/javascript">
|
||||
eval("alert(1+1)");
|
||||
<script>
|
||||
|
||||
这样我们就可以用 btoa 加密 console.log(window[x1(1)]); 方法
|
||||
|
||||
btoa("window[x1(1)]")
|
||||
输出:
|
||||
"d2luZG93W3gxKDEpXQ=="
|
||||
|
||||
执行
|
||||
eval(atob("d2luZG93W3gxKDEpXQ=="))
|
||||
也能得到结果
|
||||
|
||||
也可以将 atob 赋值给自定义的变量,如下
|
||||
|
||||
function x(id){
|
||||
window.ayf = atob;
|
||||
}
|
||||
|
||||
全局变量 ayf 就可以变成解密函数 atob
|
||||
|
||||
eval 混淆严重的缺陷,调试的时候直接进入 eval 的虚拟空间,就能直接进入运行的代码程序
|
2
zy-常见混淆原理/混淆加密解密.js
Normal file
2
zy-常见混淆原理/混淆加密解密.js
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
/* */
|
@ -83,10 +83,16 @@ js 中的‘:’是对象中的属性
|
||||
这里直接扣包含这md5的对象在node.js中运行 [搜狐md5扣对象.js](./搜狐md5扣对象.js)
|
||||
|
||||
扣js改的越少越好,最好不改,体积大小越小越好
|
||||
|
||||
|
||||
# 方法二 搜狐登陆 utils 对象
|
||||
|
||||
|
||||
这在是加密方法
|
||||
utils.md5(args.params.password)
|
||||
|
||||
我们全局搜索 utils=,发现只有一个地方有‘=’ ,这里可以判断utils是一个全局变量 [搜狐md5全扣.js](./搜狐md5全扣.js)
|
||||
我们全局搜索 utils=,发现只有一个地方有‘=’ ,找到你想要的变量 utils 将其变成全局变量
|
||||
|
||||
utils = {....}
|
||||
window.ayf = utils;
|
||||
var isSohu = /\.sohu.com/.test(location.host)
|
||||
|
||||
[搜狐md5全扣.js](./搜狐md5全扣.js)
|
@ -1,4 +1,3 @@
|
||||
|
||||
!function(window, factory) {
|
||||
"undefined" != typeof module && module.exports ? module.exports = factory(window) : "function" == typeof define && define.amd ? define(function() {
|
||||
return factory(window)
|
||||
@ -201,7 +200,8 @@
|
||||
return hex_md5(args)
|
||||
}
|
||||
}
|
||||
, isSohu = /\.sohu.com/.test(location.host)
|
||||
window.ayf = utils;
|
||||
var isSohu = /\.sohu.com/.test(location.host)
|
||||
, browser = function() {
|
||||
var w = window
|
||||
, ver = w.opera ? opera.version().replace(/\d$/, "") - 0 : parseFloat((/(?:IE |fox\/|ome\/|ion\/)(\d+\.\d)/.exec(navigator.userAgent) || [, 0])[1]);
|
||||
@ -450,6 +450,3 @@
|
||||
window.SohuPassport = SohuPassport,
|
||||
SohuPassport
|
||||
});
|
||||
|
||||
|
||||
console.log(utils.md5("123456"));
|
Loading…
x
Reference in New Issue
Block a user