乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 14436|回复: 3

[个人原创] 读学易语言第十一章|阿正_网页数据解密之找出改写

[复制链接]

[个人原创] 读学易语言第十一章|阿正_网页数据解密之找出改写

[复制链接]
已绑定手机
阿正
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
1972
注册时间
2015-11-21
最后登录
1970-1-1

勋章墙

2017-4-9 19:22:45 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
读学易语言十一 | 阿正


网页数据解密之定位关键函数





本章适用于有一定易语言基础想发展学习post方面的人

阅读,文章根据个人学习经验所写,如果有错误请指出。





上章我们简单明白了Js解密中的定位函数,这一章我们接着来搞事情----扣出函数+放

易语言里面调用。





我们来到这里可以看到准确的函数调用地方。


然后双击就可以去到函数头部





过来之后我们就可以看到这里是这样的函数的申明。


简单的看看这个函数,含有两个参数,第一个通过我们之前的看到的数据,第一

个就是我们的明文密码,然后后面的这个参数是固定的整数类型的16,这里我们可

以注意下,这里第二个参数是固定的。


那么我们把这个函数扣下来,放到js调试软件里面


function calcMD5(sInp, typemd5) {


   


    /* Calculate length in machine words, including padding */


    wLen = (((sInp.length + 8) >> 6) + 1) << 4;


    var X = new Array(wLen);


   


    /* Convert string to array of words */


    j = 4;


    for (i = 0; (i * 4) < sInp.length; i++)


    {


        X[i] = 0;


        for (j = 0; (j < 4) && ((j + i * 4) < sInp.length); j++)


        {


            X[i] += (sAscii.indexOf(sInp.charAt((i * 4) + j)) + 32) << (j * 8);


        }


    }


   


    /* Append padding bits and length */


    if (j == 4)


    {


        X[i++] = 0x80;


    }


    else


    {


        X[i - 1] += 0x80 << (j * 8);


    }


    for (; i < wLen; i++) {


        X[i] = 0;


    }


    X[wLen - 2] = sInp.length * 8;


   


    /* hard-coded initial values */


    a = 0x67452301;


    b = 0xefcdab89;


    c = 0x98badcfe;


    d = 0x10325476;


   


    /* Process each 16-word block in turn */


    for (i = 0; i < wLen; i += 16) {


        aO = a;


        bO = b;


        cO = c;


        dO = d;


        


        a = R1(a, b, c, d, X[i + 0], 7, 0xd76aa478);


        d = R1(d, a, b, c, X[i + 1], 12, 0xe8c7b756);


        c = R1(c, d, a, b, X[i + 2], 17, 0x242070db);


        b = R1(b, c, d, a, X[i + 3], 22, 0xc1bdceee);


        a = R1(a, b, c, d, X[i + 4], 7, 0xf57c0faf);


        d = R1(d, a, b, c, X[i + 5], 12, 0x4787c62a);


        c = R1(c, d, a, b, X[i + 6], 17, 0xa8304613);


        b = R1(b, c, d, a, X[i + 7], 22, 0xfd469501);


        a = R1(a, b, c, d, X[i + 8], 7, 0x698098d8);


        d = R1(d, a, b, c, X[i + 9], 12, 0x8b44f7af);


        c = R1(c, d, a, b, X[i + 10], 17, 0xffff5bb1);


        b = R1(b, c, d, a, X[i + 11], 22, 0x895cd7be);


        a = R1(a, b, c, d, X[i + 12], 7, 0x6b901122);


        d = R1(d, a, b, c, X[i + 13], 12, 0xfd987193);


        c = R1(c, d, a, b, X[i + 14], 17, 0xa679438e);


        b = R1(b, c, d, a, X[i + 15], 22, 0x49b40821);


        


        a = R2(a, b, c, d, X[i + 1], 5, 0xf61e2562);


        d = R2(d, a, b, c, X[i + 6], 9, 0xc040b340);


        c = R2(c, d, a, b, X[i + 11], 14, 0x265e5a51);


        b = R2(b, c, d, a, X[i + 0], 20, 0xe9b6c7aa);


        a = R2(a, b, c, d, X[i + 5], 5, 0xd62f105d);


        d = R2(d, a, b, c, X[i + 10], 9, 0x2441453);


        c = R2(c, d, a, b, X[i + 15], 14, 0xd8a1e681);


        b = R2(b, c, d, a, X[i + 4], 20, 0xe7d3fbc8);


        a = R2(a, b, c, d, X[i + 9], 5, 0x21e1cde6);


        d = R2(d, a, b, c, X[i + 14], 9, 0xc33707d6);


        c = R2(c, d, a, b, X[i + 3], 14, 0xf4d50d87);


        b = R2(b, c, d, a, X[i + 8], 20, 0x455a14ed);


        a = R2(a, b, c, d, X[i + 13], 5, 0xa9e3e905);


        d = R2(d, a, b, c, X[i + 2], 9, 0xfcefa3f8);


        c = R2(c, d, a, b, X[i + 7], 14, 0x676f02d9);


        b = R2(b, c, d, a, X[i + 12], 20, 0x8d2a4c8a);


        


        a = R3(a, b, c, d, X[i + 5], 4, 0xfffa3942);


        d = R3(d, a, b, c, X[i + 8], 11, 0x8771f681);


        c = R3(c, d, a, b, X[i + 11], 16, 0x6d9d6122);


        b = R3(b, c, d, a, X[i + 14], 23, 0xfde5380c);


        a = R3(a, b, c, d, X[i + 1], 4, 0xa4beea44);


        d = R3(d, a, b, c, X[i + 4], 11, 0x4bdecfa9);


        c = R3(c, d, a, b, X[i + 7], 16, 0xf6bb4b60);


        b = R3(b, c, d, a, X[i + 10], 23, 0xbebfbc70);


        a = R3(a, b, c, d, X[i + 13], 4, 0x289b7ec6);


        d = R3(d, a, b, c, X[i + 0], 11, 0xeaa127fa);


        c = R3(c, d, a, b, X[i + 3], 16, 0xd4ef3085);


        b = R3(b, c, d, a, X[i + 6], 23, 0x4881d05);


        a = R3(a, b, c, d, X[i + 9], 4, 0xd9d4d039);


        d = R3(d, a, b, c, X[i + 12], 11, 0xe6db99e5);


        c = R3(c, d, a, b, X[i + 15], 16, 0x1fa27cf8);


        b = R3(b, c, d, a, X[i + 2], 23, 0xc4ac5665);


        


        a = R4(a, b, c, d, X[i + 0], 6, 0xf4292244);


        d = R4(d, a, b, c, X[i + 7], 10, 0x432aff97);


        c = R4(c, d, a, b, X[i + 14], 15, 0xab9423a7);


        b = R4(b, c, d, a, X[i + 5], 21, 0xfc93a039);


        a = R4(a, b, c, d, X[i + 12], 6, 0x655b59c3);


        d = R4(d, a, b, c, X[i + 3], 10, 0x8f0ccc92);


        c = R4(c, d, a, b, X[i + 10], 15, 0xffeff47d);


        b = R4(b, c, d, a, X[i + 1], 21, 0x85845dd1);


        a = R4(a, b, c, d, X[i + 8], 6, 0x6fa87e4f);


        d = R4(d, a, b, c, X[i + 15], 10, 0xfe2ce6e0);


        c = R4(c, d, a, b, X[i + 6], 15, 0xa3014314);


        b = R4(b, c, d, a, X[i + 13], 21, 0x4e0811a1);


        a = R4(a, b, c, d, X[i + 4], 6, 0xf7537e82);


        d = R4(d, a, b, c, X[i + 11], 10, 0xbd3af235);


        c = R4(c, d, a, b, X[i + 2], 15, 0x2ad7d2bb);


        b = R4(b, c, d, a, X[i + 9], 21, 0xeb86d391);


        


        a = add(a, aO);


        b = add(b, bO);


        c = add(c, cO);


        d = add(d, dO);


    }


    if (typemd5 == 32) {


        return hex(a) + hex(b) + hex(c) + hex(d)


    }


    ;


    if (typemd5 == 16) {


        return hex(b) + hex(c)


    }


    ;


}








然后加载出来,加载好了,我们填入参数,去调用,我们可以发现提示错误。








然后我们去找找sAscii这个函数定义的地方,我们去浏览器里面搜索下。





搜索结果是这样的,然后我们可以看到这里有几个定义的地方


这里我们先简单看看,859和860明显是连着的,也就是说,他先定义了这个函数,

然后在第二行里面在尾部加上了一点东西,这样就成了这样的一个样子








我们从





这个变量开始定义的地方开始一直复制到刚刚md5函数的末尾,这里这个sAscii变量

是个程序集变量,所以得带上,他们中间的那些方法先不管他,先丢进去,都是一

些字节相关的操作,这个是有很大几率是计算的一部分。





加载后,结果是323B453885F5181F


我们在浏览器上面


看蓝色部分,鼠标选中,然后鼠标放到上面就会出现计算结果。





这里我们可以看大,这里的结果是一样的,也就是说,这里的123456789计算出来的

就是这样了。


然后把修改好了的js放到易语言文本常量里面,命名为“常量_加密”


然后我们加载一个乐易模块





代码这样写,然后我们这个命令第一个参数是js代码,第二个是要运行的函数名,第

三个是函数运行需要的参数,第是个参数是函数运行的参数二。








结果正确,那么我们就可以去结合之前的网页知识去写代码了。














回复

使用道具 举报

已绑定手机
namelolo
等级头衔

等級:编程菜鸟

Rank: 2

积分成就
易币
贡献
主题
精华
金钱
积分
176
注册时间
2017-3-24
最后登录
1970-1-1

勋章墙

2017-4-13 02:06:16 | 显示全部楼层
太棒了,感谢楼主,Mrak一下
回复

使用道具 举报

505028150
等级头衔

等級:编程菜鸟

Rank: 2

积分成就
易币
贡献
主题
精华
金钱
积分
131
注册时间
2016-1-25
最后登录
1970-1-1

勋章墙

2017-4-17 17:36:53 | 显示全部楼层
好东西啊 支持感谢
回复

使用道具 举报

已绑定手机
Royal丶Cs
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
441
注册时间
2016-8-11
最后登录
1970-1-1

勋章墙

2017-4-27 10:22:07 | 显示全部楼层
好东西啊 支持感谢
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-4-20 03:16 , Processed in 0.049783 second(s), 47 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表