mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-22 08:11:29 +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 @@
|
|||||||
|
|
||||||
|
/* */
|
@ -89,4 +89,10 @@ js 中的‘:’是对象中的属性
|
|||||||
这在是加密方法
|
这在是加密方法
|
||||||
utils.md5(args.params.password)
|
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) {
|
!function(window, factory) {
|
||||||
"undefined" != typeof module && module.exports ? module.exports = factory(window) : "function" == typeof define && define.amd ? define(function() {
|
"undefined" != typeof module && module.exports ? module.exports = factory(window) : "function" == typeof define && define.amd ? define(function() {
|
||||||
return factory(window)
|
return factory(window)
|
||||||
@ -201,7 +200,8 @@
|
|||||||
return hex_md5(args)
|
return hex_md5(args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, isSohu = /\.sohu.com/.test(location.host)
|
window.ayf = utils;
|
||||||
|
var isSohu = /\.sohu.com/.test(location.host)
|
||||||
, browser = function() {
|
, browser = function() {
|
||||||
var w = window
|
var w = window
|
||||||
, ver = w.opera ? opera.version().replace(/\d$/, "") - 0 : parseFloat((/(?:IE |fox\/|ome\/|ion\/)(\d+\.\d)/.exec(navigator.userAgent) || [, 0])[1]);
|
, 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,
|
window.SohuPassport = SohuPassport,
|
||||||
SohuPassport
|
SohuPassport
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
console.log(utils.md5("123456"));
|
|
Loading…
x
Reference in New Issue
Block a user