网络日志

Autojs怎么安全加密?Autojs在线加密工具注意事项。

Autojs 加密选择通过勾选  Autojs  加密选项,系统会自动配置适合   Autojs   加密的方案。Autojs 加密主要调整内容1、加密PX平坦系数的调整,更加适合  Autojs  语法,使得   Autojs   加密后脚本运行速度不会受到影响。2、加密语法更兼容  Autojs  。3、更加适合   Autojs   安全的加密算法。4、  Autojs   不需要控制台输出和反调试,当选择  Autojs  的时候,会自动屏蔽 “禁用控制台调试” 和 “禁止控制台输出”。Autojs 加密注意事项由于平时和使用 Autojs 的同学接触较多,发现一个比较严重的问题。Autojs 的研发人员,对   Autojs   的语法、JavaScript 语法谨慎度、严谨度等都比较粗糙,导致代码加密后不能运行,针对这个问题,下面提几点,希望  Autojs  的研发人员,大神们注意了。1、if、for、try...catch 等包含局部作用于的语法块的书写注意点。错误示范:

if(type == 1){
    var mq = 'active';
}else if (type == 2){
    var mq = 'selected';
}else{
    var mq = 'checked';
}
//这里使用 mq 
console.log(mq);

上面的代码,在正常的业务中使用一般不会出现问题,原因是 autojs 是基于 JavaScript ,由于 JavaScript 是弱语言,导致语法可以不用那么严谨。但是一旦加密的时候,由于 if 语句块里面保安的 mq 都是局部变量,这会有可能使加密程序会以为这 4个 mq 毫无关系。

正确示范:

var mq = 'checked';
if(type == 1){
     mq = 'active';
}else if (type == 2){
     mq = 'selected';
}
//这里使用 mq
console.log(mq);

上面的代码,先是定义一个变量“mq”,然后给一个默认值,如果业务中没有默认值,就给一个空串,或者就不给默认值,然后依次判断条件,然后给出相应的值,这样书写,更加严谨,代码容错率好。加密起来也不会出问题。

其他说明:

包括 “for” 循环中,写了局部变量,然后在 for 的外面去使用,这也是同理的道理。

包括try...catch 中,写了局部变量,然后在外面去使用,这也是同理的道理。

不要觉得这些无所谓,其实不管您是为了最后加密,还是平时书写,我们应该能注意的就要注意到,能讲究的就要讲究,这样写出来的代码会更优秀,容错率高,不会说运行着突然出一些莫名其妙的问题。2、方法名变量名放到字符串里,或者数组里等问题说明。

错误示范:

function demo() {
    alert('jsjiami.com');
}

setInterval("demo()",1000);

上面的代码,定义了一个方法名为“demo”,在一个定时任务中去1000毫秒(1秒),去执行demo方法。但是一旦加密后,有可能方法名demo 被脱敏了,变成了 “_0xkjda”类似这样了,而下面的字符串 “demo()”是没有任何变化的,导致找不到demo方法—demo is not defined。

正确示范:

function demo() {
    alert('jsjiami.com');
}

setInterval(demo,1000);

这样的话,加密程序能知道 setInterval中的 demo指向上面的方法,加密后修改了方法变量名后,会同时修改2处,这样就不会造成找不到方法。

其他说明:

这样的案例我看到N次,有的人是把方法放入数组中,或者去拼接字符串,然后去 eval 执行,都是同样的道理,因为字符串在没有运行的时候,我们的加密工具是无法识别是否有关联。所以别用方法名、变量名以字符串方式去传递。3、UI代码,也是最重要的问题。

最好的方式是把 ui 代码修改一下。

原来代码:


ui.layout(
    <drawer id="drawer">
        <vertical>
            <appbar bg="#ff0000">
                <toolbar id="toolbar" title="演示代码"/>
                <tabs id="tabs"/>
            </appbar>
            <viewpager id="viewpager">
                <frame>
                    <vertical gravity="top">
                        <text text="演示代码" margin="10" textColor="black" textSize="16sp"/>
                    </vertical>
                </frame>
                <frame layout_weight="1">
                    <webview id="webview" w="*" h="*"/>
                </frame>
            </viewpager>
        </vertical>
    </drawer>

    );

修改后代码:

var demo = '<drawer id="drawer">\
    <vertical>\
        <appbar bg="#ff0000">\
            <toolbar id="toolbar" title="演示代码"/>\
            <tabs id="tabs"/>\
        </appbar>\
        <viewpager id="viewpager">\
            <frame>\
                <vertical gravity="top">\
                    <text text="演示代码" margin="10" textColor="black" textSize="16sp"/>\
                </vertical>\
            </frame>\
            <frame layout_weight="1">\
                <webview id="webview" w="*" h="*"/>\
            </frame>\
        </viewpager>\
    </vertical>\
</drawer>'
    ui.layout(demo);

这也就能在使用“ https://www.jsjiami.com 加密”了

我们在 Autojs 放入了ui; 代码就是ui.layout() 包含的代码,这种代码因为是ui,其实没必要加密,如果您就是想加密,先用 : JS/HTML混合加密【记得选纯JS加密】。

然后放到 JS 文件中,可以一起用最牛加密 https://www.jsjiami.com 加密,这样会效果好点。