当前位置: 代码迷 >> PB >> Dropbox客户端源码破译
  详细解决方案

Dropbox客户端源码破译

热度:88   发布时间:2016-04-29 05:37:11.0
Dropbox客户端源码破解

下面是dropbox(左)和同步盘()的安装目录对比

      

Dropbox的安装目录相对来说比较干净,东西很少!简单分析一下dropbox的安装目录构成:

l  locales,icudt.dll libcef.dll这三个是跟CEF(ChromiumEmbedded Framework)框架的包

l  Microsoft.VS90.CRT

l  Dropbox.exe 主程序

l  DropboxExt.22.dll这个是dropbox嵌入explore进程的一个程序

l  Wxmsw28uh_vc.dll这个看起来是跟wxWidgets相关的一个跨平台图形库

 

使用eXeScope软件打开分别打开Dropbox.exe(左)和tongbupan.exe(右)可以看到如下信息:

         

 

可以看到虽然dropbox.exe看起来是exe文件,但实际上依赖的外部库仅仅只有USER32.dll,MSVCR90.dll,KERNEL32.dll三个!!!绝对不正常,对比右边同样是网盘的同步盘来说太少了。

同时还有一个奇怪的现象就是dropbox.exe中多出了python27.dll pythonscript这样的Resource。查阅资料后发现,dropbox客户端的大部分代码其实是python。他们采用了自己修改过的一个python解析器,同时对python代码进行了加密处理,但即使这样也避免不了被破解的命运,可见想要保护python客户端代码是非常困难的事情。

 

         在去年的7th USENIXWorkshop on Offensive Technologies交流会上,Dhiru Kholia和Przemys?awW?grzyn分享了他们自己的破解dropbox源码的过程。这里有他们在交流会上的分享视频https://www.usenix.org/conference/woot13/workshop-program/presentation/kholia。

         总结来说,通过对dropbox的破解工作,能够做到以下几点。

 

         在破解工作的基础上,DhiruKholia最终写了一个开源程序挂在github上:https://github.com/kholia/dedrop。可以去下来来利用这个工具开始进行dropbox源码破解工作。

下面来说一下破解的具体步骤:

l  准备工作

由于破解中采用的是linux客户端进行破解,所以需要一台能够运行dropbox的linux机器,本例中采用的是centos系统(linux 2.6.18)。

l  开始进行

1.      下载dedrop工程到机器上,进入到src/dedrop目录进行make编译,可能会碰到一些错误,可以自行通过稍微修改一下Makefile文件,同时检查python-dev是否安装了这样的操作来修正,总的来说工程是确定可用的。编译成功后得到libdedrop.so。

2.      下载linux版本的dropbox客户端,

wget https://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-2.7.30.tar.gz

解压后找到.dropbox-dist/dropbox文件运行一下,检查dropbox客户端是否可以运行

3.      按照下面的步骤将libdedrop.so嵌入到dropbox中进行启动:


到这里我们就可以得到一个pyc_decrypted文件夹,里面就是dropbox工程的pyc文件:

 

4.        到这里就差从pyc文件得到py文件了,这里需要利用另外一个开源工具:

Uncompyle2(https://github.com/wibiti/uncompyle2)具体安装流程工程说明里讲的很清楚,这里就不再赘述了

用uncompyle2pyc_decrypted/client_api/hashing.pyc这样就可以得到破解后的源代码了,可以用uncompyle2–h查看命令的用法,可以一次性将工程的所有pyc文件进行破解。

下面是破解后的最终工程文件,直接记事本打开就OK:

 

l  关于破解行为的说明:

下面是Dhiru and Przemyslaw对破解行为的意见:

 

 

在得知dropbox客户端被破解之后,dropbox团队联系上了作者然后做出了以下回应:

 

针对dropbox的回应,下面是Dhiru and Przemyslaw的回答:

 

 

参考资料:

https://www.usenix.org/conference/woot13/workshop-program/presentation/kholia

http://www.openwall.com/presentations/WOOT13-Security-Analysis-of-Dropbox/

https://github.com/kholia/dedrop

https://github.com/wibiti/uncompyle2

http://www.techrepublic.com/blog/it-security/researchers-reverse-engineer-the-dropbox-client-what-it-means/