首页
论坛
课程
招聘
[原创]改造系统日期与时间功能
2010-1-20 01:44 8204

[原创]改造系统日期与时间功能

2010-1-20 01:44
8204
【文章标题】: 改造系统日期与时间功能
【文章作者】: wxxw
【软件名称】: 系统自带
【保护方式】: 无壳
【编写语言】: Microsoft Visual C++ 7.0 Method2
【使用工具】: PEID 0.95  Olldbg1.10  resscope lordpe
【操作平台】: XP sp3
【软件介绍】: 不用介绍了吧
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
    双击系统托盘区的时钟,会弹出系统日期与时间的对话框,遗憾的是它没有农历功能,于是想改造下,因为自己还不会编写农历功能,所以找到一现成文件calendar.htm,想在对话框里添加按钮,点击弹出此页面查看,设想好了,开始动工
首先查看这个对话框,是由如下命令产生的:
"C:\WINDOWS\system32\rundll32.exe" /d C:\WINDOWS\system32\shell32.dll,Control_RunDLL timedate.cpl
大家可以搜索下控制面板和CPL文件的信息,下面只是简单的介绍
 CPL文件是个特殊的DLL文件,它只有一个输出函数CPlApplet();具 有 以 下 原 型: 
         typedef LONG (APIENTRY *APPLET_PROC)(HWND hwndCpl, UINT msg,
                                        LONG lParam1,LONG lParam2);
其中接受处理的消息msg有如下类
 CPL_DYNAMIC_RES equ 0
 CPL_INIT equ 1
 CPL_GETCOUNT equ 2
 CPL_INQUIRE equ 3
 CPL_SELECT equ 4
 CPL_DBLCLK equ 5
 CPL_STOP equ 6
 CPL_EXIT equ 7
 CPL_NEWINQUIRE   equ 8
 CPL_STARTWPARMSA equ 9
 CPL_STARTWPARMSW equ 10

我们的目标就是更改timedate.cpl文件了,因为有系统文件还原保护,所以先复制一份改名为aaa.cpl,用资源编辑工具将对话框10(注意:对话框1和10是相同的,试验改10才有效)添加一按钮“农历”,ID为104(68h)
用od载入rundll32.exe,参数为shell32.dll,Control_RunDLL aaa.cpl,F9运行后下消息断点,来到对话框的消息处理函数aaa.583f495c,可以设条件断点[esp+8]==111 && [esp+10]==68,按下按钮断下来,单步来到处理WM_COMMAND的代码
583F4DB6    8B5D 10         MOV EBX,DWORD PTR SS:[EBP+10]      ;[ebp+10]为wparam,低位为ID
583F4DB9    0FB7C3          MOVZX EAX,BX
583F4DBC    3D BD020000     CMP EAX,2BD
583F4DC1    8945 0C         MOV DWORD PTR SS:[EBP+C],EAX
583F4DC4    0F8C 81530000   JL aaa.583F51C0
583F4DCA    8B3D D4113F58   MOV EDI,DWORD PTR DS:[<&USER32.SendMessageW>]    ; USER32.SendMessageW
583F4DD0    33F6            XOR ESI,ESI
583F4DD2    3D BF020000     CMP EAX,2BF
583F4DD7    0F8E D3010000   JLE aaa.583F4FB0

改为
......
583F4DC4    0F8C 81530000   JL aaa.583FA14B
.....


在583FA14B添加如下代码
583FA14B    83F8 68         CMP EAX,68                            比较ID是否为“农历”按钮
583FA14E  ^ 0F85 6CB0FFFF   JNZ aaa.583F51C0
583FA154    60              PUSHAD
583FA155    6A 05           PUSH 5                           
583FA157    6A 00           PUSH 0
583FA159    6A 00           PUSH 0
583FA15B    E8 1B000000     CALL aaa.583FA17B; 压入unicode字符“calendar.htm"的地址583FA160
583FA160    6300            ARPL WORD PTR DS:[EAX],AX           
583FA162    61              POPAD
583FA163    006C00 65       ADD BYTE PTR DS:[EAX+EAX+65],CH
583FA167    006E 00         ADD BYTE PTR DS:[ESI],CH
583FA16A    64:0061 00      ADD BYTE PTR FS:[ECX],AH
583FA16E    72 00           JB SHORT aaa.583FA170
583FA170    2E:0068 00      ADD BYTE PTR CS:[EAX],CH
583FA174    74 00           JE SHORT aaa.583FA176
583FA176    6D              INS DWORD PTR ES:[EDI],DX                        ; I/O 命令
583FA177    0000            ADD BYTE PTR DS:[EAX],AL
583FA179    0000            ADD BYTE PTR DS:[EAX],AL
583FA17B    6A 00           PUSH 0
583FA17D    6A 00           PUSH 0
583FA17F    8B4424 08       MOV EAX,DWORD PTR SS:[ESP+8]
583FA183    FF90 3C70FFFF   CALL DWORD PTR DS:[EAX+FFFF703C] ;shell32.ShellExecuteW,这里直接用上面字符串的地址做重定位
583FA189    61              POPAD
583FA18A  ^ E9 31B0FFFF     JMP aaa.583F51C0

至此改造完毕,将附件解压到c:\windows\system32下
还得写个批处理
copy c:\windows\system32\timedate.cpl c:\windows\system32\timedate.cpl.bak
copy c:\windows\system32\aaa.cpl c:\windows\system32\timedate.cpl
copy c:\windows\system32\timedate.cpl c:\windows\system32\dllcache\timedate.cpl
attrib c:\windows\system32\timedate.cpl +h +r +s
attrib c:\windows\system32\dllcache\timedate.cpl +h +r +s
这样timedate.cpl文件就被替换了,呵呵,现在试一下吧,good luck!

     
--------------------------------------------------------------------------------
【版权声明】: 看雪论坛首发,转载请注明作者并保持文章的完整, 谢谢!
--------------------------------------------------------------------------------

《0day安全 软件漏洞分析技术(第二版)》第三次再版印刷预售开始!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 78
活跃值: 活跃值 (15)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
竹君 活跃值 5 2010-1-20 13:23
2
0
测试一下 可以  但是还是感觉不太舒服
雪    币: 302
活跃值: 活跃值 (13)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
wxxw 活跃值 6 2010-1-20 18:30
3
0
如果能按照网页的内容作成一个新对话框(大小实际与原对话框差不多的),然后添加页就好了,可惜自己还太菜,不会搞,只能等高手有空弄下,造福众生哈
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
热火朝天 活跃值 2010-1-21 00:53
4
0
不错,我照着试一下
雪    币: 208
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mojingtai 活跃值 2010-1-22 15:20
5
0
我也来试试看
雪    币: 95
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
假面泰山 活跃值 2010-1-22 23:41
6
0
呵呵 这个用的还真不习惯 不过辛苦了。谢谢
雪    币: 486
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
slore 活跃值 2 2010-1-23 17:03
7
0
http://download.microsoft.com/download/b/9/d/b9d1aee0-58d5-4ddc-a156-f7d67eb733e1/ICalClkSetup.msi

微软出过一个程序
雪    币: 486
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
slore 活跃值 2 2010-1-23 17:04
8
0
你改为调用这个都比那个好看。。。
个人是直接创建快捷方式想看的时候就点开
雪    币: 302
活跃值: 活跃值 (13)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
wxxw 活跃值 6 2010-1-23 20:44
9
0
感谢LS各位的指点,特别感谢7楼的兄弟,还有这么好的东东,呵呵
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liouxing 活跃值 2010-2-2 02:52
10
0
我也来试试看
雪    币: 141
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kuhasu 活跃值 2010-4-5 10:43
11
0
有没有什么改变系统标识的方法呢?
win server 2008 变成 win xp?
雪    币: 564
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lixupeng 活跃值 2010-10-25 10:21
12
0
看看这个函数OSVERSIONINFOEX

百度下
修改版本号:   
在关于Windows里面有一个内部版本号(正式版的是:2600.xpclient.010817-1148),这个版本号也是存放在注册表中的,具体位置是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows   NT\CurrentVersion,   它用一个字符串来记录,修改这个名字叫做BuildLab的字符串就可以修改你的XP的版本号。
雪    币: 430
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小小强 活跃值 2010-11-6 00:35
13
0
看了,觉得蛮好
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
myfuwe 活跃值 2010-11-16 15:25
14
0
新手我来看看
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
从古而来 活跃值 2010-12-20 23:43
15
0
我也来看看  怎么回事
雪    币: 346
活跃值: 活跃值 (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
高军 活跃值 2011-1-27 17:51
16
0
这个工具不错
游客
登录 | 注册 方可回帖
返回