首页
社区
课程
招聘
[旧帖] [求助]如何去掉这个程序中的对话框 0.00雪花
发表于: 2007-6-8 19:06 6136

[旧帖] [求助]如何去掉这个程序中的对话框 0.00雪花

2007-6-8 19:06
6136
多年前曾搞过破解,但是用的是WASM,softice和trw2000,当时觉得trw2000实在是太好用了,可惜只能在win98下用,现在流行什么破解工具,我已经不是很清楚了。
最近想要破解一个程序,这个程序有注册的地方(用的是机器码算注册码),但是没有做什么限制,只在程序里面弹出个对话框,提示未注册,不影响使用。
朋友要我帮忙破解这个程序,想到最简单的方法就是去掉这个对话框,让他不弹出,但是当年熟悉的trw2000现在不支持xp了,其他工具不会用,用了wasm看了一下,发现看不出什么名堂,

所以恳请大虾们给个思路。


点此下载这个程序

程序有两个文件,后台设置文件是cmpset.exe,注册的地方也在这里。前台是cmp.exe,就是这个程序弹出的为注册的框。

这个破解应该用静态的方法就可以搞定了,请大虾们给个思路!谢谢了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
2
去掉外面的aspack壳,用dede分析。
2007-6-8 21:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢版主的回复,马上试下
2007-6-8 22:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
实在是破不出来呀,哪位大虾伸出援手,指点迷津呀 。
我用 waspack 脱壳,用dede分析后,发现那个提示注册的对话框不是一个单独的框,好像和下面的按钮是一起的,用了IDA,OllyICE,wasm32都试过,实在是搞不定,看来这个思路不行?
2007-6-10 00:45
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
5
换一个思路,去分析一下它的注册算法。不管你能不能跟出它的算法,只要你能让它变成注册版,那个对话框不就肯定没有了吗?
2007-6-10 11:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看雪的氛围真是好呀,大虾们真热情,感动得我呜呜的!我再试,不过不要嫌我水平菜呀!
2007-6-10 16:34
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
-----------------------------------------
没改之前:
004F9F3A  |.  E8 CDE1F0FF   call    <jmp.&USER32.ShowWindow>         ; \ShowWindow
004F9F3F  |>  6A 00         push    0                                ; /Title = NULL
004F9F41  |.  68 F49F4F00   push    004F9FF4                         ; |shell_traywnd
004F9F46  |.  E8 B1DDF0FF   call    <jmp.&USER32.FindWindowA>        ; \FindWindowA
004F9F4B  |.  8BF0          mov     esi, eax
004F9F4D  |.  6A 00         push    0                                ; /Title = NULL
004F9F4F  |.  68 04A04F00   push    004FA004                         ; |button
004F9F54  |.  6A 00         push    0                                ; |hAfterWnd = NULL
004F9F56  |.  56            push    esi                              ; |hParent
004F9F57  |.  E8 A8DDF0FF   call    <jmp.&USER32.FindWindowExA>      ; \FindWindowExA
004F9F5C  |.  8BF8          mov     edi, eax
004F9F5E  |.  6A 00         push    0                                ; /ShowState = SW_HIDE
004F9F60  |.  57            push    edi                              ; |hWnd
004F9F61  |.  E8 A6E1F0FF   call    <jmp.&USER32.ShowWindow>         ; \ShowWindow
004F9F66  |.  6A 00         push    0                                ; /ShowState = SW_HIDE
004F9F68  |.  56            push    esi                              ; |hWnd
004F9F69  |.  E8 9EE1F0FF   call    <jmp.&USER32.ShowWindow>         ; \ShowWindow
004F9F6E  |.  33C0          xor     eax, eax
004F9F70  |.  A3 3C6F5000   mov     dword ptr [506F3C], eax
004F9F75  |.  881D 386F5000 mov     byte ptr [506F38], bl
004F9F7B  |.  6A EC         push    -14                              ; /Index = GWL_EXSTYLE
004F9F7D  |.  57            push    edi                              ; |hWnd
004F9F7E  |.  E8 F1DEF0FF   call    <jmp.&USER32.GetWindowLongA>     ; \GetWindowLongA

---------------------------------------------
改后:

这个地址是通过 BP ShowWindow找到的,我也不知道按多少下F9 忘了~
004F9F3A    90              nop
004F9F3B    90              nop
004F9F3C    90              nop
004F9F3D    90              nop
004F9F3E    90              nop
004F9F3F    6A 00           push    0
004F9F41    68 F49F4F00     push    004F9FF4                         ; shell_traywnd
004F9F46    E8 B1DDF0FF     call    <jmp.&USER32.FindWindowA>
004F9F4B    8BF0            mov     esi, eax
004F9F4D    6A 00           push    0
004F9F4F    68 04A04F00     push    004FA004                         ; button
004F9F54    6A 00           push    0
004F9F56    56              push    esi
004F9F57    E8 A8DDF0FF     call    <jmp.&USER32.FindWindowExA>
004F9F5C    8BF8            mov     edi, eax
004F9F5E    6A 00           push    0
004F9F60    57              push    edi
004F9F61    90              nop
004F9F62    90              nop
004F9F63    90              nop
004F9F64    90              nop
004F9F65    90              nop
004F9F66    6A 00           push    0
004F9F68    56              push    esi
004F9F69    90              nop
004F9F6A    90              nop
004F9F6B    90              nop
004F9F6C    90              nop
004F9F6D    90              nop
004F9F6E    33C0            xor     eax, eax
004F9F70    A3 3C6F5000     mov     dword ptr [506F3C], eax
---------------------------------------------

把3个CALL  <jmp ShowWindow>  nop即可
程序刚好1001KB 差那么一点点就可以上传了。。嘿嘿 自己动手
2007-6-10 18:31
0
雪    币: 202
活跃值: (77)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
最好是分析算法,找到合法的注册码
2007-6-10 18:41
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
9
cmpset.exe

0046E21D     /0F84 8C000000    je      0046E2AF                         ;  nop
0046E22F     /75 7E            jnz     short 0046E2AF                   ;  nop
0046E262  |. /74 4B            je      short 0046E2AF                   ;  nop

CMP.exe

004FF81F  |. /74 5D         je      short 004FF87E                   ;  NOP
004FF82D  |. /75 4F         jnz     short 004FF87E                   ;  NOP
004FF860  |. /74 1C         je      short 004FF87E                   ;  NOP

完美破解
2007-6-10 19:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼上几位大虾,谢谢了,两位给出代码的朋友,我都试验了,成功,万分感谢。
第一个朋友我试验了,用BP showwindow下断点,然后ALT +F9可以直接回到004F9F3A,不过你怎么知道应把那三个showwindow的CALL nop掉呢。

第二个朋友没有给出方法,所以只知道你的方法可行,但不知道你怎么弄的,不过完美破解谈不上了,完美破解应该写注册机的。最少应该把这个注册的窗口屏蔽掉,即点“注册信息”时,右边窗口不出现内容。也就是说,点“注册信息”时失效。这个应该怎么搞
2007-6-11 01:22
0
游客
登录 | 注册 方可回帖
返回
//