本帖最后由 十二 于 2010-12-14 21:01 编辑
事先声明很挫很挫 - = 能无视就无视吧,能飘过就飘过。
OD = = F3 载入 WinMend Folder Hidden
Ctrl+N 查看程序的输入表 给CreateDirectoryW下断点,至于为什么给他下断点,因为我跟过(MS这理由不成立) = = 总之就是根据CreateFile跟出来的如果你想少安装两次程序就对CreateDirectoryW下断把 = =
F9运行,能看到有一处异常POP ESI。估计是有SEH暗桩,不用理他继续F9运行直到程序被断下。
断在了kernel32.dll中 看堆栈。
0012FA18 0040C4B2 /CALL 到 CreateDirectoryW 来自 FolderHi.0040C4AD
0012FA1C 01A327FC |Path = \\?\C:\Recycler\S-1-5-21-842925246-2025429265-682008880-1013\com4\hidefiles\WinMend-Folder-Hidden
0012FA20 00000000 \pSecurity = NULL
0012FA24 0123F001
0012FA28 0040BF2A 返回到 FolderHi.0040BF2A 来自 FolderHi.0040C4A0
0012FA2C 0012FA54 指向下一个 SEH 记录的指针
0012FA30 0040BF4F SE处理程序
双击/CALL 到 CreateDirectoryW 来自 FolderHi.0040C4AD,回到0040C4AD处可以看到函数执行前的入栈以及一些赋值状况。
CreateDirectoryW 有两个参数 Path、 pSecurity。 看也能看出来 Path 所指向的是一个目录。 百度上查得原型 CreateDirectoryW 创建一个新目录 Path 是新目录名 pSecurity是目录的安全特性。
再次F9可以看到堆栈中的 CreateDirectoryW 创建了一个名称为一堆H的文件夹。
再次F9 还是一样再里层又创建了一个一堆以H命名的文件夹。
F2取消这个断点然后F9运行。弹出一个对话框,似乎是让你输入密码的- = 这个程序是别人给我的似乎是忘记密码了然后。。。。。。。
回到OD给CreateFileW断点,为什么下这个断如果你不想跟踪消息然后一步一步走,就在CreateFileW断 - =
回到对话框,随便打入一个密码然后确定。OD帮我们断下来,看堆栈。
0012F6A4 004C90EA /CALL 到 CreateFileW 来自 FolderHi.004C90E5
0012F6A8 02A7428C |FileName = \\?\C:\Recycler\S-1-5-21-842925246-2025429265-682008880-1013\com4\hidefiles\WinMend-Folder-Hidden\HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\HH...
0012F6AC C0000000 |Access = GENERIC_READ|GENERIC_WRITE
0012F6B0 00000000 |ShareMode = 0
0012F6B4 00000000 |pSecurity = NULL
0012F6B8 00000002 |Mode = CREATE_ALWAYS
0012F6BC 00000000 |Attributes = 0
0012F6C0 00000000 \hTemplateFile = NULL
在FileName 上右键数据窗口中跟随。往下拉
02A7455C 2E 00 2E 00 2E 00 5C 00 46 00 6F 00 6C 00 64 00 ...\Fold
02A7456C 65 00 72 00 5F 00 38 00 34 00 32 00 39 00 32 00 er_84292
02A7457C 35 00 32 00 34 00 36 00 5C 00 38 00 34 00 32 00 5246\842
02A7458C 39 00 32 00 35 00 32 00 34 00 36 00 2D 00 32 00 925246-2
02A7459C 30 00 32 00 35 00 34 00 32 00 39 00 32 00 36 00 02542926
02A745AC 35 00 2D 00 48 00 69 00 64 00 65 00 50 00 61 00 5-HidePa
02A745BC 73 00 73 00 77 00 6F 00 72 00 64 00 2E 00 69 00 ssword.i
02A745CC 6E 00 69 00 00 00 ni.
可以看到一个以ini的文件。
F2取消断点,给WriteFile下断。F9运行,堆栈。
0012F61C 0040BD3D /CALL 到 WriteFile 来自 FolderHi.0040BD38
0012F620 000004F0 |hFile = 000004F0
0012F624 012C4278 |Buffer = 012C4278
0012F628 00000031 |nBytesToWrite = 31 (49.)
0012F62C 0012F634 |pBytesWritten = 0012F634
0012F630 00000000 \pOverlapped = NULL
Alt+V-H查看句柄找到000004F0可以看到句柄名称为那一串路径
Alt+C回到CPU窗口右键Buffer = 012C4278数据窗口中跟随 ASCII中记录的正好有你打的明文密码。
接着F9看看还写了什么别的文件没有。还有写Desptop.ini不过似乎不重要。
隐藏文件的原理也很简单就是把文件放入CreateFileW所建的目录。
找到C:\Recycler\S-1-5-21-842925246-2025429265-682008880-1013\但是并不能看到com4文件夹。
回想WriteFile最后写入的文件Desptop.ini用cmd删除掉此文件正常显示com4但是到了第二层H。。。。目录无法进行继续访问。这是由于windows没办法处理260字节以上的目录名引起的BUG。
在此感谢火柴无限蓝
处理这种BUg非常简单就是缩短前目录的H。。。个数。 = =
到此就可以任意修改password为任意值了。
密码是明文的,程序没有加密算法,也没明显的anti。 如果有加密算法可以尝试跟踪WriteFile。或者在密码输入框跟踪消息。
很挫很挫,就当是那个OD教程的实例? |