- A+
领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)
热门下载区==>点此链接进入<<<
目录(点击切换)
本文节选自《风控要略》电子版:
码的分析难度,例如://转换前代码,计算100天总共有多少秒ime=0for(varii=0)i1<100;7i++)1{3me+=24*60*60;//小时=分钟x秒数号}三//转换后的代码Time=25659:varP=Math.PI/2*Math.zandom()for(varii=169-144-24;)i<5*5*4;1+=Math.Ppow(Math.cos(P),2)+Math.PpowLS(Math.sin(P),2))下{ne二(30=-GJ6yx工05为了之714.上我们通过勾股定理构造0值的表达式,如“25-16-9=0”“,更容易理解的形式为“3x3+4x4=5x5”,这类的数字拆解主要是为了隐藏原有值,而将“24x60x60”转换为“(30-6)x6x10x5x12”则主要是为了破坏其代表的具体语义,即“小时x分钟x秒数字拆解为表达式的方式会引帮另外一个问题:运行拆分代码是否会降低运行效率?例如,在for循环中“i<100”变为“i<5x5x4”是否会计算100次“5x5x4”?答案是否定的,在浏览器引擎编译过程中都会对代码进行优化,以V8引擎为例,遇到以上代码时会触皮一条“党量折赤”的优化策略,即在编译器里进行语法分析时,将带量表达式进行计算求值,并用求得的值来
风控要略电子书
蔡换表达式,放入音量表。换句话说,在编译过程中“i<5x5x4”会转换为“<100”以达到最佳性能。我们列举这样的优化策略并不意味着鼓励大家使用数字拆解这种混淆方式,毕况也有优化策略无法涉及的情况,在实践过程中还需要读者自行测试。4.3.1.2.2”布尔混淆布尔类型的取值学围比较固定上且范围非常小,Javascript隐式类型强转机制也使得布尔值相对较为容易,混淆手段也多种多样,我们挑选几种比较典型的类型进行介绍。1.类型转换“类型转换”是指将一个值从一个类型隐式地转换到另一个类型的操作,如vara=1+“运行后,a变量会被赋值为字符串类型的“1”,可以利用这个特性将我们的布尔值隐藏起来。在具体的实现过程中,需要理解JavaScript在强制转换boolean值时遵循以下规则:.如果被强制转换为boolean,那么将成为false的值。:其他的一切值将变为true。Javascript语言规范给那些在强制转换为boolean值时将会变为false的值定义了一个明确的、小范围的列表,这个列表在ES5语言规范中定义的一个boolean抽象操作中可以找到。.Undefined-null.false“+0、-0andNaN这些值会被转为false,其他的值都会转为true。接下来的问题就是如何触发
风控要略 pdf
强转。触发强转有很多条件,为了避免代码膀胀,我们采用最简单的逻辑表达式“!”来触上友,这样就能得到等价的布尔值。:!undefined:Inull:10“INaN虽电:IlIvoid(0)上面的示例在运行后都能得到等价的true或false的布尔值,用它们蔡换布尔值可以在一定程度上加大静态分析的难度。2.构造随机数因为布尔类型取值范围极小,所以我们可以利用乘法操作构造特定的随机数混淆布尔值。例如,可以设定能被3整除的整数表示true,能被5整除的整数表示false,那么就可以产生以下的构造函数://随机生成整数Eunctionrandom(){-zeturnParseInt(Math.random()*100000,10)4.}5.,//生成符合条件的随机数functiongenerateNumber(D1)1{returnbl?3x*(5*(zandom()s10000)+randqom()g%4+1):5*(3*(random()gsl10000)+random()s2+1)9.。}当调用generateNumber(true)时就会生成一个含有因数3上且不含有因数5的整数,而当调用generateNumber(false)时就会生成一个含有因数5上且不含有因数3的整数。生成这样的
风控要略:互联网业务反欺诈之路pdf
| 风控要略 互联网业务反欺诈之路 | 风控要略pdf |
| 风控要略 豆瓣 | 风控要略 百度网盘分享 |
| 风控要略 豆瓣 | 风控要略pdf |
综上:风控要略 反欺诈值得推荐阅读

