首页
社区
课程
招聘
国产某文件夹加密软件全面分析
发表于: 2005-12-24 21:18 20665

国产某文件夹加密软件全面分析

2005-12-24 21:18
20665

国产某文件夹加密软件全面分析
        工具OD,DeDe,记事本,还有不知道算不算是,DOS方式下的Dir命令
        软件号称:国防级的加密强度!让我们看看,它的真面目吧!

1.反调试:
        有两处调用FindWindows检查进行中是否有TDedeMainForm,和Olldby,如果有,发送WM_QUIT结束进程.
        用Olldbg加载,查找FindWindows或TDedeMainForm,OllDbg,修改JE为JMP,跳过检查.
2.次数限制:用DeDe查看DPR工程入口发现
        * Possible String Reference to: '\SOFTWARE\软件注册信息'
        004E6570   BA18714E00             mov     edx, $004E7118
        发现一个文件,'msimtf.dll?',注意文件名后面有空格,运行后发现,此文件是运行次数的记录,用打开一次,就+1.
        由于软件有30次限制,此文件内容记录了运行次数,手工修改手,发现,记录恢复,继续跟踪后发现,运行次数还保存在注册表
                 'SOFTWARE\Macromedia\Dreamweaver\7' AutoUpdateTest中,我开始想不明白,怎么能和Dreamweaver有关,现在明白了,       
        同时修改这两处,次数限制取消了.

3.软件运行时密码设置:
        用DeDe查看TForm7.Button1Click,发现,密码保存在注册表'\SOFTWARE\软件注册信息'下有
                E ,设置密码1122对应的注册表是5566 1111对应是的5555 aabb对应的是eeff, 如果删除E后,就不需要密码了.这样加密也太简单了吧.

4.注册码的保存:
        用Dede加载,找到注册窗口TForm6,输入注册码,首次不成功,发现调用 System.@LStrPos,检查了注册码应该有-
        输入假码1111-1111后,提示重启后完成注册,同时保存注册码信息到de.dll和注册表'\SOFTWARE\软件注册信息'
                注册表生成A qffhq,B 111111-111111,C qffhq@163.comggggggggggggggg
                        D 2,G 空,View 3
                A为用户名,B为注册码,C为邮箱+16个'g'

5.注册码的校验:
        找不到检查注册码的入口,从次数限制入手,
        次数限制时代码如下:
        004D9887   83B8B40300001E         cmp     dword ptr [eax+$03B4], +$1E ;比较次数是否为30次
        004D988E   0F8E9B000000           jle     004D992F
        004D9894   8B45FC                 mov     eax, [ebp-$04]

        * Reference to : TForm1.isright()  这个可能就是注册检查过程了.
        004D9897   E85C5F0000             call    004DF7F8
        004D989C   84C0                   test    al, al  '直接修改al=1,开始执行加密过程,但软件会自动注销系统,后来发现,系统以后又检查了,如果修改后,软件会调用ExitWindows注销当前系统,很有意思!
        004D989E   0F858B000000           jnz     004D992F

        暴破过程
        过程004DF7F8
        004DF860       817D F8 80020>cmp dword ptr ss:[ebp-8],280     ;  280?
        004DF867   |.  75 04         jnz short SVOHOST.004DF86D
        004DF869   |.  C645 FF 01    mov byte ptr ss:[ebp-1],1
        004DF86D   |>  33C0          xor eax,eax
        修改:004DF860为cmp dword ptr ss:[ebp-8],0       ;  280?
        004DF860       837D F8 00    cmp dword ptr ss:[ebp-8],0       ;  280==0?
        004DF864       90            nop
        004DF865       90            nop
        004DF866       90            nop
        004DF867   |.  75 04         jnz short SVOHOST.004DF86D
        .....
        最后.禁用注册标签按钮,用资源编辑工具修改 实现完美破解!

        注销的校验:
        004D9DA0    > \803D C8944E00>cmp byte ptr ds:[4E94C8],0
        ds:[004E94C8]=01 Jump from 004D9D74
        004D9DA7    .  74 0B         je short SVOHOST.004D9DB4
        004D9DA9    .  66:BA 0100    mov dx,1
        004D9DAD    .  33C0          xor eax,eax
        004D9DAF    .  E8 C4DCF2FF   call SVOHOST.00407A78                 ;  注销

       
6.文件夹加密原理分析:
        加密过的文件列表保存在danine.dll中.
        加密过程:TForm1.Button1Click
        加密前的校验:
                经过密码不能为空,两次密码不相符,不能加密系统目录,桌面,我的文档,加密软件所在目录等,
                不能本地或隐藏加密分区根目录,不能对网络数据进行本地或隐藏加密等检查后,进入加密过程.

        加密过程开始:
                004D9DB4    > \8D85 E4FEFFFF lea eax,dword ptr ss:[ebp-11C]
                004D9DBA    .  50            push eax
                004D9DBB    .  8D95 E0FEFFFF lea edx,dword ptr ss:[ebp-120]
                004D9DC1    .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
                004D9DC4    .  8B80 B8030000 mov eax,dword ptr ds:[eax+3B8]
                004D9DCA    .  E8 3DF7F2FF   call SVOHOST.0040950C
                004D9DCF    .  8B95 E0FEFFFF mov edx,dword ptr ss:[ebp-120]

                取回收站目录: F:\RECYCLER\
                生成文件名: F:\RECYCLED\desktop.ini,隐藏,系统文件,文件内容如下:
                '[.ShellClassInfo]CLSID={645FF040-5081-101B-9F08-00AA002F954E}'

                建立目录: 'S-1-5-21-1060284298-811497611-11778920086-500\'
                生成文件名: F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\desktop.ini
                建立目录: F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\
                建立目录: F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\Di1  \com1.{21ec2020-3aea-1069-a2dd-08002b30309d}\
                查找文件是否存在(文件目录是否加密过): F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\Di1  \com1.{21ec2020-3aea-1069-a2dd-08002b30309d}\Support.mem  其它Support为加密的目录名
                取Support的ASCII码"537570706F7274"
                建立目录: F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\Di1  \com1.{21ec2020-3aea-1069-a2dd-08002b30309d}\537570706F7274"
                移动文件: F:\Support\* 到F:\RECYCLED\S-1-5-21-1060284298-811497611-11778920086-500\INFO2\Di1  \com1.{21ec2020-3aea-1069-a2dd-08002b30309d}\537570706F7274"
                生成文件名: F:\Support|.mem 表示F:\Support目录加密,mem为加密类型
                生成加密记录文件名:  "C:\WINNT\system32\danine.dll"
                写入加密记录到加密记录文件:  向C:\WINNT\system32\danine.dll中写入F:\Support|.mem
                生成加密记录文件名:  "应用程序目录\danine.dll"
                写入加密记录到加密记录文件:  向 应用程序目录\danine.dll中写入F:\Support|.mem
                生成文件: F:\Support.mem 用于解密文件目录.
                mem文件,显示的图标为文件夹,打开文件类型查看后发现:
                        注册的文件类型:.me0-.me25,.mem  这些文件的打开方式为:"应用程序目录\SVOHOST.EXE" unlock "%1"
                最后,用户在F:\看到了Support.mem,其实是一个文件并不是目录!

                以上是本地加密原理,对于移动型加密,我加密后,查看文件内容如下:
                        我对F:\qqproxy1进行了加密
                        加密后F:\qqproxy1\生成以下文件
                        文件 desktop.ini  
                                [.ShellClassInfo]
                                InfoTip=文件夹
                                IconIndex=2
                                IconFile=!解密加密.exe
                                ConfirmFileOp=1
                        文件 !解密加密.exe 一个UPX加壳的EXE,可于解开加密的文件,可以脱离主程序运行.       
                        文件夹 Thumbs.dn 内容如下:
                        文件 desktop.ini
                                [.ShellClassInfo]
                                CLSID={2227a280-3aea-1069-a2de-08002b30309d}
                       
                        文件:117789687 117789687应该是从qqproxy1计算出来的!
                        文件:117789687LIST.mem 打开后是一串数字,估计是原来的F:\qqproxy1下的文件清单列表记录对照.
                        文件:1.mem,2.mem,.....7.mem 是原来的F:\qqproxy1下的7个文件,只是改名了,我用记事本打开了一个,一看和原来的一样,并且大小也没有变化.
               
               
        解密过程:
                具体过程没有分析,不过如果对加密过程清除了,解密当然就是反其道而行之了吧.
        在对文件夹加密后,密码的保存:
                这部分没有分析!
                       

7.防删除功能分析:
         通过在Windows启动时,加载主程序,限制用户不能删除文件,对本地类型的加密,一但丢失了.mem文件,及加密文件记录,数据就没办法恢复了,永远放到回收站了.
       

8.在Windows启动时自动加载分析:
        Userinit注册键         HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit。这里也能够使系统启动时自动初始化程序。
        Userinit C:\WINNT\system32\userinit.exe,,"E:\SVOH0ST\HFEE\SVOHOST.EXE" un userinit.exe

9.其它:       
        通过命令列参数 Lock , UnLock 用于加密,解密菜单

以上是大概的分析,加密算法,由于水平有限,分析不了,其它好多分析用DeDe一目了然的!
原来看过,网上有加文件加密保护软件的资料,好多软件,都是用特殊文件夹,回收站,来做的,可靠性没办法说了!

希望和大家交流一下!


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 212
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
写得好,我最喜欢这种原理说明的文章
2005-12-25 12:44
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
不顶对不起楼主,不顶不是自己本意

破解不只是使xx免费,更是给大家一个真相
2005-12-25 13:27
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
4
很详细,谢谢!
2005-12-25 14:48
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
5
支持,学习。
2005-12-25 15:02
0
雪    币: 228
活跃值: (119)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
呵呵,国防级的加密软件是不会在外边到处都能看见的。
2005-12-25 18:56
0
雪    币: 176
活跃值: (100)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
最初由 machoman 发布
呵呵,国防级的加密软件是不会在外边到处都能看见的。

吹的牛是国防级的,吹一下双子大厦就不会被飞机炸了,飞机被吹走
2005-12-25 19:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这篇文章写的的确不错,应该是9000这个版本吧,我以作者的方法修改该软件后,问题同样存在,不知是哪儿出错了。跳过(有2个地方)注销系统后,软件同样运行不正常,无法回主窗口,只有关闭主程序(当然已经对文件夹加密了)。这是怎么回事啊?所以我不知作者爆破的那个地方有没有用,结合我对这个软件的了解(7000破过),可以修改使用次数,当然以前的版本加密很简单。8000后我就没法了,看了这篇文章受益不少,只是仍不能解决本质问题,所以只有手动去修改那两个地方了。
2005-12-26 01:07
0
雪    币: 164
活跃值: (53)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
请看直面的内容:
* Reference to : TForm1.isright()  这个就是注册检查过程了.
  004D9897   E85C5F0000             call    004DF7F8
  004D989C   84C0                   test    al, al  '直接修改al=1,开始执行加密过程,但软件会自动注销系统,后来发现,系统以后又检查了,如果修改后,软件会调用ExitWindows注销当前系统,很有意思!
  004D989E   0F858B000000           jnz     004D992F

  暴破过程
  过程004DF7F8
  004DF860       817D F8 80020>cmp dword ptr ss:[ebp-8],280     ;  280? 我估计280好像是系统根据用户注册码算出来的一个数据.
  004DF867   |.  75 04         jnz short SVOHOST.004DF86D
  004DF869   |.  C645 FF 01    mov byte ptr ss:[ebp-1],1
  004DF86D   |>  33C0          xor eax,eax
  修改:004DF860为cmp dword ptr ss:[ebp-8],0       ;  280?
  004DF860       837D F8 00    cmp dword ptr ss:[ebp-8],0       ;  280==0?
  004DF864       90            nop
  004DF865       90            nop
  004DF866       90            nop
  004DF867   |.  75 04         jnz short SVOHOST.004DF86D

暴破方法修改TForm1.isright()  过程的004DF7F8
返回值,其实系统在好多位置调用了这个过程,所以,最好的办法是修改过程返回值为1
请看下面的内容:
004DF860       817D F8 80020>cmp dword ptr ss:[ebp-8],280     ;  280?
  004DF867   |.  75 04         jnz short SVOHOST.004DF86D
  004DF869   |.  C645 FF 01    mov byte ptr ss:[ebp-1],1 ;只要想办法执行这一句就行了,
  004DF86D   |>  33C0          xor eax,eax
其实修改
jnz short SVOHOST.004DF86D也可以,修改的方法就多了,只要达到目的就行了.

其实去年最早看过8000的版本,记得是加过壳的,后来好不容易手工脱壳(不知道为什么这个版本没有加壳),上次也是修改了原来的加密过程后,系统自动注销,刚开始我不明白,后年多试了几次,才发现系统是这样保护的,注销过程也很好加断点,只要断ExitWindowsEx就行了,这一点倒有点新鲜,没见过其它软件这样搞的!
2005-12-26 08:59
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
10
最初由 qffhq 发布
8.在Windows启动时自动加载分析:
Userinit注册键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit。这里也能够使系统启动时自动初始化程序。
Userinit C:\WINNT\system32\userinit.exe,,"E:\SVOH0ST\HFEE\SVOHOST.EXE" un userinit.exe
........


汗,一不小心中招了

注意,在删除的时候只要把,"E:\SVOH0ST\HFEE\SVOHOST.EXE" un userinit.exe删除就行了,如果一不小心把Userinit也删除了,那么请参考这篇文章修复
http://support.microsoft.com/?kbid=307545
2005-12-26 17:24
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
最近使用瑞星2006才发现在注册表中可以自启动的地方如此多.
userinit.exe那处很隐蔽,如果新手不小心删掉估计就要重装了.
2005-12-26 17:33
0
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
南蛮妈妈又学了一招阴的
2005-12-26 20:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
精彩!学习中
2005-12-27 22:00
0
雪    币: 208
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这句:E:\SVOH0ST\HFEE\SVOHOST.EXE" un userinit.exe  中间的un是什么意思??
2006-1-10 20:59
0
游客
登录 | 注册 方可回帖
返回
//