分类 软件 下的文章

ONES是款体积小巧(仅一个主程序和语言库文件,总共1M多)刻录功能丰富的刻录软件,它除了体积小、免安装、便携外,还是一款免费的刻录软件,即使是在条件有限的WinPE下也能轻松完成刻录功能。
由于ONES的免安装和便携性,也造成了一些尴尬的场景。当我们在一台机子上首次运行此程序,便会在本地计算机的注册表增加自动播放的记录项,下次放入光盘便会自动弹出ONES刻录软件的选项,可是问题是如果你已经把ONES.exe程序放到了其他的目录下了,操作系统就会提示你无法打开应用程序,势必造成了一些没用的垃圾选项,严重影响了人们对于完美的追求。那么修改方法有两种:1、直接移除ONES.exe对注册表中自动播放选项的读写;2、让ONES.exe每次都能重新进行注册表的覆盖,以确保ONES.exe路径的完整性。
修改工具就用OD动态分析,我们通过搜索“AutoplayHandlers”来到

0045E189  |.  8B2D 14E04900 MOV EBP,DWORD PTR DS:[<&ADVAPI32.RegCrea>;  ADVAPI32.RegCreateKeyA
0045E18F  |.  56            PUSH ESI
0045E190  |.  8D4424 0C    LEA EAX,DWORD PTR SS:[ESP+C]
0045E194  |.  50            PUSH EAX                                ; /pHandle
0045E195  |.  68 E8194A00   PUSH ONES.004A19E8                      ; |Subkey =     "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\HandleCDBurningOnArrival"
0045E19A  |.  68 02000080   PUSH 80000002                            ; |hKey = HKEY_LOCAL_MACHINE
0045E19F  |.  FFD5          CALL EBP                                ; \RegCreateKeyA
0045E1A1  |.  85C0          TEST EAX,EAX
0045E1A3  |.  8B1D 1CE04900 MOV EBX,DWORD PTR DS:[<&ADVAPI32.RegSetV>;  ADVAPI32.RegSetValueExA
0045E1A9  |.  75 22        JNZ SHORT ONES.0045E1CD
0045E1AB  |.  8B4C24 0C    MOV ECX,DWORD PTR SS:[ESP+C]
0045E1AF  |.  6A 00        PUSH 0                                  ; /BufSize = 0
0045E1B1  |.  68 E0E54900   PUSH ONES.0049E5E0                      ; |Buffer = ONES.0049E5E0
0045E1B6  |.  6A 01        PUSH 1                                  ; |ValueType = REG_SZ
0045E1B8  |.  6A 00        PUSH 0                                  ; |Reserved = 0
0045E1BA  |.  68 E0194A00   PUSH ONES.004A19E0                      ; |ValueName = "Zulu2"
0045E1BF  |.  51            PUSH ECX                                ; |hKey
0045E1C0  |.  FFD3          CALL EBX                                ; \RegSetValueExA
0045E1C2  |.  8B5424 0C    MOV EDX,DWORD PTR SS:[ESP+C]
0045E1C6  |.  52            PUSH EDX                                ; /hKey
0045E1C7  |.  FF15 20E04900 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
0045E1CD  |>  8D4424 0C    LEA EAX,DWORD PTR SS:[ESP+C]
0045E1D1  |.  50            PUSH EAX

观察下结构发现这段代码刚好完成了一次 HandleCDBurningOnArrival 注册表的注册,路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\HandleCDBurningOnArrival、表名Zulu2、表值为空,现在只要破坏掉这些数据结构就可以使HandleCDBurningOnArrival失效,但是这种修改方法还是有些不足之处,我们难以预料堆栈的平衡,修改的地方偏多,还是找找入口地址,我们继续往上看


0045E150  /$  81EC 08010000 SUB ESP,108
0045E156  |.  A1 C0AC4B00   MOV EAX,DWORD PTR DS:[4BACC0]
0045E15B  |.  33C4          XOR EAX,ESP
0045E15D  |.  898424 040100>MOV DWORD PTR SS:[ESP+104],EAX
0045E164  |.  813D 28EC4D00>CMP DWORD PTR DS:[4DEC28],834
0045E16E  |.  7D 17        JGE SHORT ONES.0045E187
0045E170  |.  33C0          XOR EAX,EAX
0045E172  |.  8B8C24 040100>MOV ECX,DWORD PTR SS:[ESP+104]
0045E179  |.  33CC          XOR ECX,ESP
0045E17B  |.  E8 2B2F0200   CALL ONES.004810AB
0045E180  |.  81C4 08010000 ADD ESP,108
0045E186  |.  C3            RETN
0045E187  |>  53            PUSH EBX
0045E188  |.  55            PUSH EBP
0045E189  |.  8B2D 14E04900 MOV EBP,DWORD PTR DS:[<&ADVAPI32.RegCrea>;  ADVAPI32.RegCreateKeyA
0045E18F  |.  56            PUSH ESI
0045E190  |.  8D4424 0C    LEA EAX,DWORD PTR SS:[ESP+C]
0045E194  |.  50            PUSH EAX                                ; /pHandle
0045E195  |.  68 E8194A00   PUSH ONES.004A19E8                      ; |Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\HandleCDBurningOnArrival"
0045E19A  |.  68 02000080   PUSH 80000002                            ; |hKey = HKEY_LOCAL_MACHINE
0045E19F  |.  FFD5          CALL EBP                                ; \RegCreateKeyA
0045E1A1  |.  85C0          TEST EAX,EAX

刚好发现 0045E16E |. 7D 17 JGE SHORT ONES.0045E187,跳转到 0045E187 |> 53 PUSH EBX 刚好是入口地址,现在只要稍加修改就行了把“JGE 0045E187”改成“NOP”就移除了这个自动播放的注册功能,改成“JMP 0045E187”就可以每次运行都重新注册了。是不是感觉更加绿色了呢?

exFAT文件系统是FAT32的升级版,解决了FAT32单文件4G的限制。与NTFS格式相比具有简单性,因为FAT系统不具备NTFS的安全性和权限管理而更适合被用于外部存储设备,如优盘、闪盘、超棒、记忆棒等闪存设备。在这些闪存设备中都存在着芯片颗粒的读写次数限制,这时FAT的简单性也就发挥了作用,简单性意味着没了的安全性和权限管理表,虽说每次读写都仅仅少了安全性和权限管理表的几次访问和记录,但是的的确确减少了读写的次数,因而提高了设备的使用寿命。如果把exFAT文件系统作为我们BT、电驴等分享式下载工具的下载分区,不也能达到减少磁头的读写次数,提高硬盘的使用寿命吗?
XP系统只要打KB955704补丁就可以支持exFAT格式了。作为一个系统爱好者,自然也得把自己的系统维护工具PE来个升级,通过解压补丁包、替换文件、增加注册表以达到增加exFAT文件系统的支持。大多情况下,我们很容易从网络资源中找到我们想要的一些东西,但有时却是不能的,虽然找到了经过资源精简的SHELL32.DLL,但是有一个问题困扰着我,那就是不能移除右键菜单的“自动播放(&P)”功能。在搜索未果的情况下,只能祭出反汇编动态调试工具OLLYDBG,把SHELL32.DLL载入反汇编分析,
1、通过搜素关键字“自动播放”找到

7D65F413  |.  50            |PUSH EAX                                ; |Buffer
7D65F414  |.  68 38210000   |PUSH 2138                              ; |RsrcID = STRING "自动播放(&P)"
7D65F419  |.  FF35 A4E5797D |PUSH DWORD PTR DS:[7D79E5A4]            ; |hInst = NULL
7D65F41F  |.  FF15 541D597D |CALL DWORD PTR DS:[<&USER32.LoadStringW>; \LoadStringW

2、这个函数,接着往上分析条件跳转的地方

7D65F3DD  |.  FF90 94000000 |CALL DWORD PTR DS:[EAX+94]
7D65F3E3  |.  81BD 34F1FFFF>|CMP DWORD PTR SS:[EBP-ECC],1000
7D65F3ED  |.  74 41        |JE SHORT SHELL32.7D65F430
7D65F3EF  |.  83BD 34F1FFFF>|CMP DWORD PTR SS:[EBP-ECC],1
7D65F3F6  |.  74 38        |JE SHORT SHELL32.7D65F430

3、从这里看可知跳转到地方是7D65F430,转到7D65F430看下

7D65F430  |>  53            |PUSH EBX                                ; /Arg4
7D65F431  |.  68 ACF7657D   |PUSH SHELL32.7D65F7AC                  ; |Arg3 = 7D65F7AC
7D65F436  |.  57            |PUSH EDI                                ; |Arg2
7D65F437  |.  68 44E9597D   |PUSH SHELL32.7D59E944                  ; |Arg1 = 7D59E944
7D65F43C  |.  8BCE          |MOV ECX,ESI                            ; |
7D65F43E  |.  E8 7D3DF9FF   |CALL SHELL32.7D5F31C0                  ; \SHELL32.7D5F31C0
7D65F443  |.  53            |PUSH EBX
7D65F444  |.  68 1451597D   |PUSH SHELL32.7D595114
7D65F449  |.  68 E4E9597D   |PUSH SHELL32.7D59E9E4                  ;  UNICODE "Extended"
7D65F44E  |>  8BCE          |MOV ECX,ESI                            ; |
7D65F450  |.  68 54365B7D   |PUSH SHELL32.7D5B3654                  ; |Arg1 = 7D5B3654
7D65F455  |.  E8 663DF9FF   |CALL SHELL32.7D5F31C0                  ; \SHELL32.7D5F31C0
7D65F45A  |.  68 04010000   |PUSH 104                                ; /Arg2 = 00000104
7D65F45F  |.  8D85 F4FDFFFF |LEA EAX,DWORD PTR SS:[EBP-20C]          ; |
7D65F465  |.  50            |PUSH EAX                                ; |Arg1
7D65F466  |.  8BCE          |MOV ECX,ESI                            ; |
7D65F468  |.  E8 D4FBFFFF   |CALL SHELL32.7D65F041                  ; \SHELL32.7D65F041
7D65F46D  |.  53            |PUSH EBX
7D65F46E  |.  8D85 F4FDFFFF |LEA EAX,DWORD PTR SS:[EBP-20C]
7D65F474  |.  50            |PUSH EAX
7D65F475  |.  57            |PUSH EDI
7D65F476  |.  68 70365B7D   |PUSH SHELL32.7D5B3670                  ;  UNICODE "shell\AutoRun\command"
7D65F47B  |.  E9 49020000   |JMP SHELL32.7D65F6C9
7D65F480  |>  68 50E4597D   |PUSH SHELL32.7D59E450                  ; /String2 = "ShellExecute"
7D65F485  |.  FFB5 38F1FFFF |PUSH DWORD PTR SS:[EBP-EC8]            ; |String1
7D65F48B  |.  FF15 E415597D |CALL DWORD PTR DS:[<&KERNEL32.lstrcmpiW>; \lstrcmpiW

4、很明显还是在执行自动播放的ShellExecute。返回步骤2,继续往上分析条件跳转语句,来到

7D65F3BB  |.  FF90 DC000000 |CALL DWORD PTR DS:[EAX+DC]
7D65F3C1  |.  85C0          |TEST EAX,EAX
7D65F3C3  |.  0F84 07030000 |JE SHELL32.7D65F6D0

5、这次是跳转到7D65F6D0,转到7D65F6D0看下

7D65F671  |.  85C0          |TEST EAX,EAX
7D65F673  |.  74 5B        |JE SHORT SHELL32.7D65F6D0
7D65F675  |.  53            |PUSH EBX
7D65F676  |.  68 00365B7D   |PUSH SHELL32.7D5B3600                  ;  UNICODE "Autorun"
7D65F67B  |.  EB 45        |JMP SHORT SHELL32.7D65F6C2
7D65F67D  |>  8B06          |MOV EAX,DWORD PTR DS:[ESI]
7D65F67F  |.  8BCE          |MOV ECX,ESI
7D65F681  |.  FF90 DC000000 |CALL DWORD PTR DS:[EAX+DC]
7D65F687  |.  85C0          |TEST EAX,EAX
7D65F689  |.  74 45        |JE SHORT SHELL32.7D65F6D0
7D65F68B  |.  68 F0355B7D   |PUSH SHELL32.7D5B35F0                  ; /String2 = "command"
7D65F690  |.  FFB5 38F1FFFF |PUSH DWORD PTR SS:[EBP-EC8]            ; |/Path
7D65F696  |.  FF15 601C597D |CALL DWORD PTR DS:[<&SHLWAPI.PathFindFi>; |\PathFindFileNameW
7D65F69C  |.  50            |PUSH EAX                                ; |String1
7D65F69D  |.  FF15 E415597D |CALL DWORD PTR DS:[<&KERNEL32.lstrcmpiW>; \lstrcmpiW
7D65F6A3  |.  85C0          |TEST EAX,EAX
7D65F6A5  |.  75 13        |JNZ SHORT SHELL32.7D65F6BA
7D65F6A7  |.  68 04010000   |PUSH 104                                ; /Arg2 = 00000104
7D65F6AC  |.  8D85 F4FDFFFF |LEA EAX,DWORD PTR SS:[EBP-20C]          ; |
7D65F6B2  |.  50            |PUSH EAX                                ; |Arg1
7D65F6B3  |.  8BCE          |MOV ECX,ESI                            ; |
7D65F6B5  |.  E8 87F9FFFF   |CALL SHELL32.7D65F041                  ; \SHELL32.7D65F041
7D65F6BA  |>  53            |PUSH EBX
7D65F6BB  |.  8D85 F4FDFFFF |LEA EAX,DWORD PTR SS:[EBP-20C]
7D65F6C1  |.  50            |PUSH EAX
7D65F6C2  |>  57            |PUSH EDI
7D65F6C3  |.  FFB5 38F1FFFF |PUSH DWORD PTR SS:[EBP-EC8]
7D65F6C9  |>  8BCE          |MOV ECX,ESI                            ; |
7D65F6CB  |.  E8 F03AF9FF   |CALL SHELL32.7D5F31C0                  ; \SHELL32.7D5F31C0
7D65F6D0  |>  FFB5 38F1FFFF |PUSH DWORD PTR SS:[EBP-EC8]            ; /String
7D65F6D6  |.  FF15 3016597D |CALL DWORD PTR DS:[<&KERNEL32.lstrlenW>>; \lstrlenW

6、这下心里有底了,已经不在Autorun代码的语段里了,返回步骤4,把"JE 7D65F6D0"改成"jmp 7D65F6D0",完工,测试下,OK,搞定……

准备工具 :wrar380sc.exe UPX.rar Cmd.rar RarReg.key
前提:机子上先安装好Winrar,制作过程中需要用到
提取自解压模块“setup.sfx”和注释文件“setup.txt”。

setup.sfx 提取方法:
解压UPX.rar到 D:\UPX , 将Cmd 保存到D:\UPX, 然后将 wrar380sc.exe 复制一份到D:\UPX,
打开 D:\UPX\Cmd.bat 。
复制该命令 upx wrar380sc.exe -d -osetup.sfx --overlay=strip (右键粘贴)到Cmd窗口, 得到setup.sfx
如果提示“文件没有找到”, 确认 wrar380sc.exe 已复制到UPX目录, 或程序名不对
若提示“未经UPX压缩”, 需要输入 upx wrar380sc.exe 压缩一次, 再输入upx wrar380sc.exe -d -
osetup.sfx --overlay=strip 解压即可得到 setup.sfx 。

setup.txt 提取方法:
右键wrar380sc.exe “用 WinRAR 打开”, 点解压, 路径输入 d:\rar1, 确定。并把注册文件rarreg.key也
复制到该文件夹。

复制rar1文件夹中的WinRAR.exe 和Rar.exe到UPX文件夹下

打开 Cmd.bat 复制该命令 WinRAR.exe cw wrar380sc.exe setup.txt (右键粘贴)到Cmd窗口, 后即可得
到 setup.txt 。
若提示“没有找到压缩文件”可能到网站下载的WinRAR名字不是 wrar380sc.exe 改名即可
重新打包:
美化了RAR资源,添加了KEY,好像万事具备了,可以重新打包了。
打开 D:\rar1 ,找 Rar.exe与rarreg.key 复制到 D:\UPX。在开始---运行中输入cmd ”确定。
复制下面命令(右键粘贴)到Cmd窗口, 确定。
d:\upx\rar.exe a -r -ep1 -cfg- -s -m5 -zd:\upx\setup.txt -sfxd:\upx\setup.sfx d:\winrarsc.exe d:\rar1*.*
其中参数-z和d:\upx\setup.txt、参数-sfx和d:\upx\setup.sfx是连在一起的, 中间没有空格。
命令执行完毕后, 会在D:\盘根目录下生成一个winrarsc.exe。

这是本人自己制作的安装包,绝对没有任何的恶意插件,安装简单方便。全自动检测系统包括了4种字体(微软雅黑、Digital、Segoe UI、uni 05_53)和微软Visual C++ 运行库。修正了在NT6系统上仍会安装C++运行库的BUG,由原来的0.9.5.3内核升级为0.9.6.3,更新了绝大多数的DSP插件,兼容性稳定性大大提高,界面如下图
3edd751ex7c58f9551ac9&690.jpg
几个简单又实用的DSP插件,特别是Dolby Headphone和回旋混响器(在安装路径下的convolve文件夹已经包含脉冲文件了)。
3edd751ex7c58fa959540&690.jpg
想要有封面和背景的话只要在歌曲文件夹下放一张cover.jpg和back.jpg就可以了。
本人使用SSRC、Unitpulse2K脉冲和Dolby Headphone,用耳机听效果真是太好了,很有空间感。
提供RayFile下载地址如下:
http://www.rayfile.com/zh-cn/files/dd0503f3-6a46-11de-ac12-0014221b798a/