首页
论坛
课程
招聘
揭Security Folder的底[原创]
2005-8-16 17:14 11084

揭Security Folder的底[原创]

2005-8-16 17:14
11084
目标:Security Folder 1.42

工具:OD,PEID, IMPREC, LORDPE, DEPENDENCE

任务:1,解决软件使用口令。  2,戳破谎言,侦察其保护文件方法。

行动:
1,大概了解。
  引用下该文件说明 “Security Folder采用了与此不同的全新的方法,我认为该方法比上面两种方法显然效果更好。如果没有登陆软件,即使对电脑硬盘进行全面搜索,也无法搜索到所创建的文件夹及其内容。一般的人是根本无法破解的。”  当然了,最后我们会看到它的真面目。使用方法略,看帮助。

2,脱壳。
首先,用peid侦察下,发现是aspack212的壳(用peid查只是做的到心里有数)
OD载入,顺利得到oep为14c4(简单壳,代码略)。

用IMPREC对import进行修复,得到1.15m大小的脱壳后程序x.exe(起名是个人爱好)

运行x,出错了,弹出“无法定位程序输入点 RtlRestroreLastWin32Error 于动态连接库 kernel32.dll 上。”,这句话可能大家经常遇到,下面我们来进行手工修复。在x上单击右键选择 View Dependenice(当然假定你装了vc)就是用DEPENDECNCE打开x,这里可以看到引入的dll,发现有2个dll变红,kernel32和oleaut32,这说明,import里对这两个dll的函数可能有错,点击发红的dll,在右上栏中寻找RtlRestoreLastWin32Error,果然,前边的i字母变红,表示有错误,当然有错误了,因为该函数根本就不在kernel32中嘛,他在ntdll里,当然了我们在oleaut32里也找到2个出错函数分别是hint为0x00b的VariantC和hint为0x000的一个未知函数,注意hint值是关键分别在2个dll的导出表(右下)查出错函数的hint,结果RtlRestoreLastWin32Error对应的是SetFileAttributesW,VariantC对应的是VariantCopyInd,至于那个未知,先不用管,因为lordpe查出它根本不占位置,估计imprec的错吧,接着,就打开lordpe对其进行修复,替换为正确的函数,有个小插曲就是VariantCopyInd比VariantC长,改变不了函数,我们索性把它和hint为0的那个函数一起删掉,希望不影响什么功能!运行,ok。

脱壳总结:壳到容易脱,修复到是费了我点时间,至于为什么会出错,对于RtlRestoreLastWin32Error来说,我猜想是kernel32的版本问题,98或me下的朋友可以查一下hint0x306是什么,对于VariantC我认为是import表太小的原因,有可能是imprec修复的时候出的错,因为根本就没有VariantC这个函数。

3,破解口令。
我们先运行软件,随便输入密码,哈哈,太好了,有出错提示,这样就 有突破口了,用w32dasm载入,我们主要用它的字符串查找,因为OD对中文支持不太好。“密码错误!你没有登陆本软件的权限!”就是它,双击
:0040A095 BA02000000              mov edx, 00000002
:0040A09A E8710F0B00              call 004BB010
:0040A09F 59                      pop ecx
:0040A0A0 84C9                    test cl, cl          //关键比较
:0040A0A2 7425                    je 0040A0C9          //关键跳
:0040A0A4 6A40                    push 00000040

* Possible StringData Ref from Data Obj ->"登录"
                                  |
:0040A0A6 B90D194C00              mov ecx, 004C190D

* Possible StringData Ref from Data Obj ->"密码错误!
你没有登录本软件的权限!"
                                  |
:0040A0AB BAEB184C00              mov edx, 004C18EB     //来到这
呵呵,理论上把je改成jne就爆破了,但是我们不知足,需要找出密码,进而写出看密码器。但是我们今天主要任务是搞清它是怎样隐藏文件的,看清他的嘴脸,所以,这步我们推后!

4,窥视其保护方法。
根据其帮助,大概意思就是可以“创建一个使别人发现不了的安全文件夹”,注意引号,提取下就是创建文件夹!CreateDirectoryA!就是它,下断!跑起软件,随便创建一个安全文件夹,yeah!感谢上帝,感谢od,看下他的参数,一目了然,所谓的安全文件夹居然是……
0012FC28   00E338FC  |Path = "C:\recycled\  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \  \ \ALL"
由于软件的无耻,使的这重要的一环到此结束!真相大白了!

总结:没什么好说的了!

5,解决3的残留问题,写看密码器。
在其所谓安全文件夹里发现一个ps.ini的文件,大家可以自己看,其中ps的值不知道什么意思,尝试改变密码后发现有变,相信它就是加密过的密码!
对于ini文件,GetPrivateProfileStringA是个不错的断点,果然,断下来了,
后边就是密码的还原,简单算法,不说了,给出看密码的东东
#include <iostream.h>
#include <windows.h>

void main()
{
        char        s[10];
        GetPrivateProfileString("SFolder", "PS", "0", s, 10, "C:\\recycled\\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\  \\ \\ps\\ps.ini");
       
        for(int i=0; i<10, s[i]!=0x00; i++)
        {
                s[i]+=(i+1);
        }
        cout<<s<<endl;
}

总结:我是大菜鸟,有错的地方再所难免,希望各位老大不吝赐教!

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 2455
活跃值: 活跃值 (1063)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
china 活跃值 5 2005-8-16 17:18
2
0
直接对回收站压缩为RAR,解出来看看也成吧。

对你名字好感兴趣,
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
kickabc 活跃值 1 2005-8-16 18:03
3
0
这个玩意其实是有一次我去同学家,他邀请我一起欣赏日本av,用的就是这个软件,等他不在的时候我想再回味回味,结果怎么都找不到,当时很好奇,回来下了一个,看他帮助上说好象挺神,结果,别说压缩回收站了,就是直接建了个很深的目录,加上了隐藏系统只读属性而已,十分没意思,也没写头,我就是凑个字充个数,主要还是脱壳修复还有的一说。

ps:我的名字胡起的,相信这样没重名
雪    币: 212
活跃值: 活跃值 (56)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 活跃值 28 2005-8-16 18:17
4
0
欣赏日本av, 等他不在的时候我想再回味回味
雪    币: 115
活跃值: 活跃值 (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
juexing 活跃值 2005-8-16 18:20
5
0
日本AV好啊,我也常看.
雪    币: 9160
活跃值: 活跃值 (1184)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
LOCKLOSE 活跃值 2 2005-8-16 18:23
6
0
最初由 kickabc 发布
这个玩意其实是有一次我去同学家,他邀请我一起欣赏日本av,用的就是这个软件,等他不在的时候我想再回味回味,结果怎么都找不到,当时很好奇,回来下了一个,看他帮助上说好象挺神,结果,别说压缩回收站了,就是直接建了个很深的目录,加上了隐藏系统只读属性而已,十分没意思,也没写头,我就是凑个字充个数,主要还是脱壳修复还有的一说。

ps:我的名字胡起的,相信这样没重名

ABC可跟某人重名了.
雪    币: 104
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
window 活跃值 1 2005-8-16 19:19
7
0
十分欣赏楼主的文件名, 决定以后脱壳的文件也叫x
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
sfind 活跃值 1 2005-8-16 19:37
8
0
我脱壳以后都叫123.exe
雪    币: 60
活跃值: 活跃值 (118)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 活跃值 85 2005-8-16 19:45
9
0
可以在ImportRec里编辑好函数后再fix
试试用stripper_v207f自动脱壳后看看哪些是正确函数
ASPack手脱时可以使用原来的IAT
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
CrackerABC 活跃值 2005-8-16 20:41
10
0
看来孙猴子嘿嘿。。。。。。。
雪    币: 381
活跃值: 活跃值 (19)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
笨奔 活跃值 1 2005-8-16 21:07
11
0
哈 。哈。。有股色气
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
水豆腐 活跃值 2005-8-16 21:35
12
0
我脱壳以后都叫mm.exe
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zy79 活跃值 2005-8-17 09:39
13
0
研究一下!!
雪    币: 226
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
warcraft 活跃值 2005-8-17 11:10
14
0
看看,有意思
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
kickabc 活跃值 1 2005-8-17 20:21
15
0
最初由 fly 发布
可以在ImportRec里编辑好函数后再fix
试试用stripper_v207f自动脱壳后看看哪些是正确函数
ASPack手脱时可以使用原来的IAT


本来我也想用imprec编辑,但是,里边全是valid,没有出错函数,不知道怎么一回事,所以只能拿lordpe看了,还有我想问下,如果发生import表不够大,产生的函数错误,就比如VariantC那个,应该怎样简单的修复?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
kickabc 活跃值 1 2005-8-17 20:23
16
0
汗楼上的各位,其实我说的是anti-virus
游客
登录 | 注册 方可回帖
返回