工具OD,DeDe,記事本,還有不知道算不算是,DOS方式下的Dir命令
軟件號稱(chēng):國防級的加密強度!讓我們看看,它的真面目吧!
1.反調試:
有兩處調用FindWindows檢查進(jìn)行中是否有TDedeMainForm,和Olldby,如果有,發(fā)送WM_QUIT結束進(jìn)程.
用Olldbg加載,查找FindWindows或TDedeMainForm,OllDbg,修改JE為JMP,跳過(guò)檢查.
2.次數限制:用DeDe查看DPR工程入口發(fā)現
* Possible String Reference to: '\SOFTWARE\軟件注冊信息'
004E6570 BA18714E00 mov edx, $004E7118
發(fā)現一個(gè)文件,'msimtf.dll?',注意文件名后面有空格,運行后發(fā)現,此文件是運行次數的記錄,用打開(kāi)一次,就+1.
由于軟件有30次限制,此文件內容記錄了運行次數,手工修改手,發(fā)現,記錄恢復,繼續跟蹤后發(fā)現,運行次數還保存在注冊表
'SOFTWARE\Macromedia\Dreamweaver\7' AutoUpdateTest中,我開(kāi)始想不明白,怎么能和Dreamweaver有關(guān),現在明白了,
同時(shí)修改這兩處,次數限制取消了.
3.軟件運行時(shí)密碼設置:
用DeDe查看TForm7.Button1Click,發(fā)現,密碼保存在注冊表'\SOFTWARE\軟件注冊信息'下有
E ,設置密碼1122對應的注冊表是5566 1111對應是的5555 aabb對應的是eeff, 如果刪除E后,就不需要密碼了.這樣加密也太簡(jiǎn)單了吧.
4.注冊碼的保存:
用Dede加載,找到注冊窗口TForm6,輸入注冊碼,首次不成功,發(fā)現調用 System.@LStrPos,檢查了注冊碼應該有-
輸入假碼1111-1111后,提示重啟后完成注冊,同時(shí)保存注冊碼信息到de.dll和注冊表'\SOFTWARE\軟件注冊信息'
注冊表生成A qffhq,B 111111-111111,C qffhq@163.comggggggggggggggg
D 2,G 空,View 3
A為用戶(hù)名,B為注冊碼,C為郵箱+16個(gè)'g'
5.注冊碼的校驗:
找不到檢查注冊碼的入口,從次數限制入手,
次數限制時(shí)代碼如下:
004D9887 83B8B40300001E cmp dword ptr [eax+$03B4], +$1E ;比較次數是否為30次
004D988E 0F8E9B000000 jle 004D992F
004D9894 8B45FC mov eax, [ebp-$04]
* Reference to : TForm1.isright() 這個(gè)可能就是注冊檢查過(guò)程了.
004D9897 E85C5F0000 call 004DF7F8
004D989C 84C0 test al, al '直接修改al=1,開(kāi)始執行加密過(guò)程,但軟件會(huì )自動(dòng)注銷(xiāo)系統,后來(lái)發(fā)現,系統以后又檢查了,如果修改后,軟件會(huì )調用ExitWindows注銷(xiāo)當前系統,很有意思!
004D989E 0F858B000000 jnz 004D992F
暴破過(guò)程
過(guò)程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
.....
最后.禁用注冊標簽按鈕,用資源編輯工具修改 實(shí)現完美破解!
注銷(xiāo)的校驗:
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 ; 注銷(xiāo)
6.文件夾加密原理分析:
加密過(guò)的文件列表保存在danine.dll中.
加密過(guò)程:TForm1.Button1Click
加密前的校驗:
經(jīng)過(guò)密碼不能為空,兩次密碼不相符,不能加密系統目錄,桌面,我的文檔,加密軟件所在目錄等,
不能本地或隱藏加密分區根目錄,不能對網(wǎng)絡(luò )數據進(jìn)行本地或隱藏加密等檢查后,進(jìn)入加密過(guò)程.
加密過(guò)程開(kāi)始:
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}\
查找文件是否存在(文件目錄是否加密過(guò)): 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"
移動(dòng)文件: 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為加密類(lèi)型
生成加密記錄文件名: "C:\WINNT\system32\danine.dll"
寫(xiě)入加密記錄到加密記錄文件: 向C:\WINNT\system32\danine.dll中寫(xiě)入F:\Support|.mem
生成加密記錄文件名: "應用程序目錄\danine.dll"
寫(xiě)入加密記錄到加密記錄文件: 向 應用程序目錄\danine.dll中寫(xiě)入F:\Support|.mem
生成文件: F:\Support.mem 用于解密文件目錄.
mem文件,顯示的圖標為文件夾,打開(kāi)文件類(lèi)型查看后發(fā)現:
注冊的文件類(lèi)型:.me0-.me25,.mem 這些文件的打開(kāi)方式為:"應用程序目錄\SVOHOST.EXE" unlock "%1"
最后,用戶(hù)在F:\看到了Support.mem,其實(shí)是一個(gè)文件并不是目錄!
以上是本地加密原理,對于移動(dòng)型加密,我加密后,查看文件內容如下:
我對F:\qqproxy1進(jìn)行了加密
加密后F:\qqproxy1\生成以下文件
文件 desktop.ini
[.ShellClassInfo]
InfoTip=文件夾
IconIndex=2
IconFile=!解密加密.exe
ConfirmFileOp=1
文件 !解密加密.exe 一個(gè)UPX加殼的EXE,可于解開(kāi)加密的文件,可以脫離主程序運行.
文件夾 Thumbs.dn 內容如下:
文件 desktop.ini
[.ShellClassInfo]
CLSID={2227a280-3aea-1069-a2de-08002b30309d}
文件:117789687 117789687應該是從qqproxy1計算出來(lái)的!
文件:117789687LIST.mem 打開(kāi)后是一串數字,估計是原來(lái)的F:\qqproxy1下的文件清單列表記錄對照.
文件:1.mem,2.mem,.....7.mem 是原來(lái)的F:\qqproxy1下的7個(gè)文件,只是改名了,我用記事本打開(kāi)了一個(gè),一看和原來(lái)的一樣,并且大小也沒(méi)有變化.
解密過(guò)程:
具體過(guò)程沒(méi)有分析,不過(guò)如果對加密過(guò)程清除了,解密當然就是反其道而行之了吧.
在對文件夾加密后,密碼的保存:
這部分沒(méi)有分析!
7.防刪除功能分析:
通過(guò)在Windows啟動(dòng)時(shí),加載主程序,限制用戶(hù)不能刪除文件,對本地類(lèi)型的加密,一但丟失了.mem文件,及加密文件記錄,數據就沒(méi)辦法恢復了,永遠放到回收站了.
8.在Windows啟動(dòng)時(shí)自動(dòng)加載分析:
Userinit注冊鍵 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit。這里也能夠使系統啟動(dòng)時(shí)自動(dòng)初始化程序。
Userinit C:\WINNT\system32\userinit.exe,,"E:\SVOH0ST\HFEE\SVOHOST.EXE" un userinit.exe
9.其它:
通過(guò)命令列參數 Lock , UnLock 用于加密,解密菜單
以上是大概的分析,加密算法,由于水平有限,分析不了,其它好多分析用DeDe一目了然的!
原來(lái)看過(guò),網(wǎng)上有加文件加密保護軟件的資料,好多軟件,都是用特殊文件夾,回收站,來(lái)做的,可靠性沒(méi)辦法說(shuō)了!
希望和大家交流一下!