-
-
[原创]破解肆意修改墙纸的软件
-
发表于:
2010-5-31 13:13
4642
-
昨天一个网友发个软件给我,他说这个软件每次启动都会修改墙纸,问我能不能破解一下,去除这个讨厌的功能。虽然技术不咋的,但我还是答应了。软件还是比较好搞定,因为没有加壳。昨晚上我就把破解好的软件发给了他。但今天开我的电脑时我的墙纸被改了,晕,看来还没彻底搞定。虽然软件每次启动不修改墙纸,但电脑开机墙纸就会被修改。于是只好又启动OD,分析了一下,发现这个软件每次启动都会生成一幅图片到c:\windows下,只要生成了图片,我的墙纸就会被改变。呵呵,有了思路,开工。
od载入,查找字符串,来到下面的位置:
0047F140 83F8 07 CMP EAX,7 //比较,随机生成一幅图片(共七幅)
0047F143 0F87 8E000000 JA ID_DP0.0047F1D7
0047F149 |. FF2485 50F147>JMP DWORD PTR DS:[EAX*4+47F150]
0047F150 |. D7F14700 DD ID_DP0.0047F1D7 ; 分支表 被用于 0047F149
0047F154 |. 70F14700 DD ID_DP0.0047F170
0047F158 |. 7FF14700 DD ID_DP0.0047F17F
0047F15C |. 8EF14700 DD ID_DP0.0047F18E
0047F160 |. 9DF14700 DD ID_DP0.0047F19D
0047F164 |. ACF14700 DD ID_DP0.0047F1AC
0047F168 |. BBF14700 DD ID_DP0.0047F1BB
0047F16C |. CAF14700 DD ID_DP0.0047F1CA
0047F170 |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 1 of switch 0047F140
0047F173 |. BA 10F44700 MOV EDX,ID_DP0.0047F410 ; ASCII "wall_7"
0047F178 |. E8 DB53F8FF CALL ID_DP0.00404558
0047F17D |. EB 58 JMP SHORT ID_DP0.0047F1D7
0047F17F |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 2 of switch 0047F140
0047F182 |. BA 20F44700 MOV EDX,ID_DP0.0047F420 ; ASCII "wall_1"
0047F187 |. E8 CC53F8FF CALL ID_DP0.00404558
0047F18C |. EB 49 JMP SHORT ID_DP0.0047F1D7
0047F18E |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 3 of switch 0047F140
0047F191 |. BA 30F44700 MOV EDX,ID_DP0.0047F430 ; ASCII "wall_2"
0047F196 |. E8 BD53F8FF CALL ID_DP0.00404558
0047F19B |. EB 3A JMP SHORT ID_DP0.0047F1D7
0047F19D |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 4 of switch 0047F140
0047F1A0 |. BA 40F44700 MOV EDX,ID_DP0.0047F440 ; ASCII "wall_3"
0047F1A5 |. E8 AE53F8FF CALL ID_DP0.00404558
0047F1AA |. EB 2B JMP SHORT ID_DP0.0047F1D7
0047F1AC |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 5 of switch 0047F140
0047F1AF |. BA 50F44700 MOV EDX,ID_DP0.0047F450 ; ASCII "wall_4"
0047F1B4 |. E8 9F53F8FF CALL ID_DP0.00404558
0047F1B9 |. EB 1C JMP SHORT ID_DP0.0047F1D7
0047F1BB |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 6 of switch 0047F140
0047F1BE |. BA 60F44700 MOV EDX,ID_DP0.0047F460 ; ASCII "wall_5"
0047F1C3 |. E8 9053F8FF CALL ID_DP0.00404558
0047F1C8 |. EB 0D JMP SHORT ID_DP0.0047F1D7
0047F1CA |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; Case 7 of switch 0047F140
0047F1CD |. BA 70F44700 MOV EDX,ID_DP0.0047F470 ; ASCII "wall_6"
0047F1D2 |. E8 8153F8FF CALL ID_DP0.00404558
0047F1D7 |> 68 78F44700 PUSH ID_DP0.0047F478 ; ASCII "wallpaper"; Default case of switch 0047F140
0047F1DC |. 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
0047F1DF |. E8 8C57F8FF CALL ID_DP0.00404970
上面的代码把七幅代码放内存中,然后随机生成图片,呵呵,是不是很简单。
继续搜索,来到关键代码处,:-)
0047F303 B9 8CF44700 MOV ECX,ID_DP0.0047F48C ; ASCII "\sm2100_desktop.bmp"
0047F308 E8 B754F8FF CALL ID_DP0.004047C4 //call将图片压入栈
0047F30D 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0047F310 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0047F313 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
0047F315 FF51 50 CALL DWORD PTR DS:[ECX+50] //call出栈
我上面已经说了这个软件修改墙纸的原理,没说,不可能,看看上面,。既然这个软件是把图片放在c:\windows下,你想到怎么做了吗?呵呵,对,我们就不让它放图片在c:\windows下。行动.........
0047F303 . B9 8CF44700 MOV ECX,ID_DP01.0047F48C ; ASCII "\sm2100_desktop.bmp"
0047F308 . 90 NOP
0047F309 . 90 NOP
0047F30A . 90 NOP
0047F30B . 90 NOP
0047F30C . 90 NOP
0047F30D . 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0047F310 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0047F313 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
0047F315 . 90 NOP
0047F316 . 90 NOP
0047F317 . 90 NOP
直接把call NOP掉,不过这里要注意,一定要两个call都NOP掉哦,不然将会出现一个警示框,呵呵!(我第一次就只NOP了一个)
补上一段代码,真麻烦,每次验证都要重启机子,我的爱机啊......
0047F377 . 84C0 TEST AL,AL //测试是否是生成的墙纸
0047F379 . /75 2A JZ SHORT ID_DP0最.0047F3A5 //是,跳转;不是,更换
0047F37B . |8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
0047F37E . |BA C8F44700 MOV EDX,ID_DP0最.0047F4C8 ; ASCII "Wallpaper"
0047F383 . |8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0047F386 . |E8 1DD9FEFF CALL ID_DP0最.0046CCA8
0047F38B . |B9 DCF44700 MOV ECX,ID_DP0最.0047F4DC
0047F390 . |BA E8F44700 MOV EDX,ID_DP0最.0047F4E8 ; ASCII "TileWallpaper"
0047F395 . |8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0047F398 . |E8 0BD9FEFF CALL ID_DP0最.0046CCA8
0047F39D . |8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0047F3A0 . |E8 A3D5FEFF CALL ID_DP0最.0046C948
0047F3A5 > \33C0 XOR EAX,EAX
到此功德圆满,应该没问题了吧,
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课