11111111111111111111略

之前项目有一个需求在下载文件的时候,在向后端发出请求的这段时间要有loading动画提高交互性

但是当时后端只能以传统的向前端发送流的形式来下载,ajax派不上用场只能用js去模拟,但是这样就监听不到后端的返回只能等后端将数据流发送回来,浏览器自动弹出下载提示

想了想,只能是后端返回的时候发送一个cookie: {downloading: true}然后我前端轮询这个字段,轮询到就将loading关闭并将这个cookie删除。理论上来说好像是没什么毛病但实际应用起来还是有一些坑嘚。

首先遇到的第一个坑就是发现cookie删不掉

当然,这里说明一下并不是js或者浏览器本身的机制不允许删除cookie,只是我删除的方式不对

一開始我只是简单的将cookie设置为空,将expires设置为-1心里想着,已过期cookie自动清除,美滋滋然而事实并没有按照我想的发生。downloading还是躺在cookie里面没有任何变化是因为没有刷新吗?于是我在后面再次获取了一下:

没办法打开application看看,果然发现了问题后端传递过来的这个cookie没有设置expires,但昰却默认设置了path再联想我之前删除的cookie是没有带任何参数的,结合cookie的机制发现了问题所在。

在删除cookie的时候要加上这个字段所带的参数鈳能是出于安全的考虑,不同的参数即使名字相同,也会当成两个cookie存储所以我删除的并不是后端传过来的cookie,自然就删除不了

第二个坑,后端设置cookie默认的path属性没有规律

出于代码复用和性能考虑,后端的很多功能都会集成到一个API再加上前端可能会用到一些第三方的框架,这些框架所采用过的设计模式都各不相同都会造成一些不可预测的结果,而项目有可能在任何地方都会有下载的需求所以当我发現如何删除cookie的时候,我又发现了一个坑那就是不知道该如何准确获取cookie的path属性。而且如果你请求的接口默认path与你所在的url不匹配的话浏览器将会忽略这次的cookie设置,在我的项目的直接体现就是后端响应了cookie,但是我前端接收不到页面loading无法消失,卡死了

所以解决办法就是让後端在set-cookie的时候讲path设置成固定的'/',以java为例:


}

开篇介绍了本文要破解的对象鉯及它的简要截图说明,下面正式开始说明破解过程

准备工具:OD、侦壳工具、脱壳工具(当然大神如果是手工脱壳就不用看了)

1、 控件是以瀏览器为载体的,不像c/s程序那样直接可以用od载入程序运行这里我们得用浏览器打开。

       首先打开任意一款浏览器找到测试的文档界面,點击打印预览然后用OD载入相应的进程。

接着我们点击OD上方的E可执行模块,查看调用了哪些DLL和OCX

发现有2个跟lodop相关的文件我们找到这个目錄。对这2个文件进行分析下

接着用Upx脱壳工具进行脱壳,我这里使用的Upx脱壳机DLL轻松的将壳脱了下来。

接下来重新用OD载入,使用上面的步骤OD载入之后,先用字符串查找插件搜索下我们要去掉的字符串

此时:我们找不到跟输出字符串一致的字符串,这是许多软件的常用掱法看来这条路走不通,我们得重新换一个思路试试

分析:百度了一下lodop注册,是在js的文件里加入注册帐号与密码。在lodopfuc.js文件中有一處代码:

 //=====如下空白位置适合调用统一功能(如注册码、语言选择等):==== 
 
这里我只是按照它的规定长度范围内,随便输入一个帐号密码


那么,既嘫填入了帐号密码ocx代码中是否应该存在着一段检测帐号密码是否正确的地方呢 ??答案是肯定的它肯定要检测我的帐号密码是否正確。


那我们再次回到字符串查找里面搜索与帐号或密码相关的字符串,找到如下图相关字符串





这里我们随便点击一个进去,比如该名稱被特别禁止


点击后来到了我们调试的ocx汇编代码处。分析下它的入口点在哪





找下这段代码的入口点。然后下断点





OK.至此,我们已经可鉯保障调试的顺利进行了也就是OD载入浏览器进程之后,点击打印预览在检测帐号这段代码直接,会在OD中断下来下面就是根据汇编代碼分析过程了 。


重复OD载入步骤如无意外,OD会在我们下断点的地方断来了


接下来就是一个耐心的过程,一步步往上的call找因为这段代码茬检测用户的时候执行的,所以离真正的检测帐号call非常接近细心的话几分钟就会发现惊喜。


因为这涉及到别人的版权将不再贴图发放。


在找的过程中会出现你输入在js中的帐号字符串而在比对密码的时候经过了加密处理,加密算法我也没能破解出来但是最终你可以得箌一个与你“随便输入帐号”的密码相对应的一个密码,也就是lodop把”你输入的密码“最终加工后的密码字符串到这里你把密码填写到你嘚js文件中,就能达到破解的目地(本人亲测),同样也可以在密码比对的时候改变跳转的规则(爆破)看自己喜欢了,爆破的东望各位就鈈要随便的流传出去了


本文就着中讲下浏览器插件的破解思路,具体的反汇编分析过程这里就不细谈了

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信