首页
社区
课程
招聘
[原创]菜鸟发现:破解vb程序也不难
发表于: 2006-2-10 10:00 13814

[原创]菜鸟发现:破解vb程序也不难

2006-2-10 10:00
13814
收藏
免费 0
支持
分享
最新回复 (43)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
大家好,看到我的文章受到大家的表扬,我很感谢!虽然,我在论坛里受到打击和冷落,可是看到大家的支持,我收到了鼓励!是的!何必要求加精呢!浪的虚名有何用!以后,我还会发表具更好的文章!
不过,我也有难题,希望大家指教:
我希望知道,在od里,软件调用软驱的命令如何得知?
原因:我最近在学习一个软件,发现这个老软件竟然调用软盘,如果没有软盘,提示错误!高手能否给点思路?我希望解除软件读取软驱,如何修改???

我已经下断了,拦截下该信息窗口
代码如下:00401000  /$  83EC 64       SUB ESP,64
00401003  |.  A1 C8B04100   MOV EAX,DWORD PTR DS:[41B0C8]
00401008  |.  8B0D CCB04100 MOV ECX,DWORD PTR DS:[41B0CC]
0040100E  |.  66:8B15 D0B04>MOV DX,WORD PTR DS:[41B0D0]
00401015  |.  53            PUSH EBX
00401016  |.  894424 04     MOV DWORD PTR SS:[ESP+4],EAX
0040101A  |.  A0 D2B04100   MOV AL,BYTE PTR DS:[41B0D2]
0040101F  |.  894C24 08     MOV DWORD PTR SS:[ESP+8],ECX
00401023  |.  8B0D B8B04100 MOV ECX,DWORD PTR DS:[41B0B8]
00401029  |.  66:895424 0C  MOV WORD PTR SS:[ESP+C],DX
0040102E  |.  8B15 BCB04100 MOV EDX,DWORD PTR DS:[41B0BC]
00401034  |.  55            PUSH EBP
00401035  |.  56            PUSH ESI
00401036  |.  57            PUSH EDI
00401037  |.  884424 1A     MOV BYTE PTR SS:[ESP+1A],AL
0040103B  |.  A1 C0B04100   MOV EAX,DWORD PTR DS:[41B0C0]
00401040  |.  894C24 1C     MOV DWORD PTR SS:[ESP+1C],ECX
00401044  |.  66:8B0D C4B04>MOV CX,WORD PTR DS:[41B0C4]
0040104B  |.  895424 20     MOV DWORD PTR SS:[ESP+20],EDX
0040104F  |.  8A15 C6B04100 MOV DL,BYTE PTR DS:[41B0C6]
00401055  |.  33DB          XOR EBX,EBX
00401057  |.  68 F4FF0000   PUSH 0FFF4                               ; /MemSize = FFF4 (65524.)
0040105C  |.  6A 42         PUSH 42                                  ; |Flags = GHND
0040105E  |.  894424 2C     MOV DWORD PTR SS:[ESP+2C],EAX            ; |
00401062  |.  66:894C24 30  MOV WORD PTR SS:[ESP+30],CX              ; |
00401067  |.  885424 32     MOV BYTE PTR SS:[ESP+32],DL              ; |
0040106B  |.  66:895C24 33  MOV WORD PTR SS:[ESP+33],BX              ; |
00401070  |.  FF15 88224200 CALL DWORD PTR DS:[<&KERNEL32.GlobalAllo>; \GlobalAlloc
00401076  |.  3BC3          CMP EAX,EBX
00401078  |.  A3 A8004200   MOV DWORD PTR DS:[4200A8],EAX
0040107D      75 0C         JNZ SHORT setup.0040108B
0040107F  |.  33C0          XOR EAX,EAX
00401081  |.  5F            POP EDI
00401082  |.  5E            POP ESI
00401083  |.  5D            POP EBP
00401084  |.  5B            POP EBX
00401085  |.  83C4 64       ADD ESP,64
00401088  |.  C2 1000       RETN 10
0040108B  |>  50            PUSH EAX                                 ; /hMem
0040108C  |.  FF15 FC224200 CALL DWORD PTR DS:[<&KERNEL32.GlobalLock>; \GlobalLock
00401092  |.  A3 F8FF4100   MOV DWORD PTR DS:[41FFF8],EAX
00401097  |.  395C24 7C     CMP DWORD PTR SS:[ESP+7C],EBX
0040109B      74 0C         JE SHORT setup.004010A9
0040109D  |.  33C0          XOR EAX,EAX
0040109F  |.  5F            POP EDI
004010A0  |.  5E            POP ESI
004010A1  |.  5D            POP EBP
004010A2  |.  5B            POP EBX
004010A3  |.  83C4 64       ADD ESP,64
004010A6  |.  C2 1000       RETN 10
004010A9  |>  8B7424 78     MOV ESI,DWORD PTR SS:[ESP+78]
004010AD  |.  68 007F0000   PUSH 7F00                                ; /RsrcName = IDI_APPLICATION
004010B2  |.  53            PUSH EBX                                 ; |hInst
004010B3  |.  895C24 54     MOV DWORD PTR SS:[ESP+54],EBX            ; |
004010B7  |.  C74424 58 F06>MOV DWORD PTR SS:[ESP+58],setup.00406BF0 ; |
004010BF  |.  895C24 5C     MOV DWORD PTR SS:[ESP+5C],EBX            ; |
004010C3  |.  895C24 60     MOV DWORD PTR SS:[ESP+60],EBX            ; |
004010C7  |.  897424 64     MOV DWORD PTR SS:[ESP+64],ESI            ; |
004010CB  |.  FF15 CC234200 CALL DWORD PTR DS:[<&USER32.LoadIconA>]  ; \LoadIconA
004010D1  |.  68 007F0000   PUSH 7F00                                ; /RsrcName = IDC_ARROW
004010D6  |.  53            PUSH EBX                                 ; |hInst
004010D7  |.  894424 68     MOV DWORD PTR SS:[ESP+68],EAX            ; |
004010DB  |.  FF15 C4234200 CALL DWORD PTR DS:[<&USER32.LoadCursorA>>; \LoadCursorA
004010E1  |.  8D4C24 4C     LEA ECX,DWORD PTR SS:[ESP+4C]
004010E5  |.  895C24 68     MOV DWORD PTR SS:[ESP+68],EBX
004010E9  |.  894424 64     MOV DWORD PTR SS:[ESP+64],EAX
004010ED  |.  8D4424 10     LEA EAX,DWORD PTR SS:[ESP+10]
004010F1  |.  51            PUSH ECX                                 ; /pWndClass
004010F2  |.  895C24 70     MOV DWORD PTR SS:[ESP+70],EBX            ; |
004010F6  |.  894424 74     MOV DWORD PTR SS:[ESP+74],EAX            ; |
004010FA  |.  FF15 6C234200 CALL DWORD PTR DS:[<&USER32.RegisterClas>; \RegisterClassA
00401100  |.  66:85C0       TEST AX,AX
00401103      75 25         JNZ SHORT setup.0040112A
00401105  |.  8B15 A8004200 MOV EDX,DWORD PTR DS:[4200A8]
0040110B  |.  52            PUSH EDX                                 ; /hMem => 00D20004
0040110C  |.  FF15 30234200 CALL DWORD PTR DS:[<&KERNEL32.GlobalUnlo>;
00401112  |.  A1 A8004200   MOV EAX,DWORD PTR DS:[4200A8]
00401117  |.  50            PUSH EAX                                 ; /hMem => 00D20004
00401118  |.  FF15 F4224200 CALL DWORD PTR DS:[<&KERNEL32.GlobalFree>; \GlobalFree
0040111E  |.  33C0          XOR EAX,EAX
00401120  |.  5F            POP EDI
00401121  |.  5E            POP ESI
00401122  |.  5D            POP EBP
00401123  |.  5B            POP EBX
00401124  |.  83C4 64       ADD ESP,64
00401127  |.  C2 1000       RETN 10
0040112A  |>  53            PUSH EBX                                 ; /lParam
0040112B  |.  56            PUSH ESI                                 ; |hInst
0040112C  |.  53            PUSH EBX                                 ; |hMenu
0040112D  |.  53            PUSH EBX                                 ; |hParent
0040112E  |.  6A 24         PUSH 24                                  ; |Height = 24 (36.)
00401130  |.  68 FA000000   PUSH 0FA                                 ; |Width = FA (250.)
00401135  |.  6A 0A         PUSH 0A                                  ; |Y = A (10.)
00401137  |.  6A 0A         PUSH 0A                                  ; |X = A (10.)
00401139  |.  8D4C24 3C     LEA ECX,DWORD PTR SS:[ESP+3C]            ; |
0040113D  |.  68 0000CF02   PUSH 2CF0000                             ; |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION
00401142  |.  8D5424 34     LEA EDX,DWORD PTR SS:[ESP+34]            ; |
00401146  |.  51            PUSH ECX                                 ; |WindowName
00401147  |.  52            PUSH EDX                                 ; |Class
00401148  |.  53            PUSH EBX                                 ; |ExtStyle
00401149  |.  FF15 58234200 CALL DWORD PTR DS:[<&USER32.CreateWindow>; \CreateWindowExA
0040114F  |.  A3 E0014200   MOV DWORD PTR DS:[4201E0],EAX
00401154  |.  8B8C24 840000>MOV ECX,DWORD PTR SS:[ESP+84]
0040115B  |.  51            PUSH ECX                                 ; /ShowState
0040115C  |.  50            PUSH EAX                                 ; |hWnd
0040115D  |.  FF15 5C234200 CALL DWORD PTR DS:[<&USER32.ShowWindow>] ; \ShowWindow
00401163  |.  8B3D 64234200 MOV EDI,DWORD PTR DS:[<&USER32.LoadBitma>;  USER32.LoadBitmapA
00401169  |.  68 ACB04100   PUSH setup.0041B0AC                      ; /setupbmp
0040116E  |.  56            PUSH ESI                                 ; |hInst
0040116F  |.  FFD7          CALL EDI                                 ; \LoadBitmapA
00401171  |.  68 A0B04100   PUSH setup.0041B0A0                      ; /setup0bmp
00401176  |.  56            PUSH ESI                                 ; |hInst
00401177  |.  A3 0C004200   MOV DWORD PTR DS:[42000C],EAX            ; |
0040117C  |.  FFD7          CALL EDI                                 ; \LoadBitmapA
0040117E  |.  68 94B04100   PUSH setup.0041B094                      ; /setup1bmp
00401183  |.  56            PUSH ESI                                 ; |hInst
00401184  |.  A3 E0FF4100   MOV DWORD PTR DS:[41FFE0],EAX            ; |
00401189  |.  FFD7          CALL EDI                                 ; \LoadBitmapA
0040118B  |.  53            PUSH EBX                                 ; /MsgFilterMax
0040118C  |.  53            PUSH EBX                                 ; |MsgFilterMin
0040118D  |.  8D5424 38     LEA EDX,DWORD PTR SS:[ESP+38]            ; |
00401191  |.  8935 E8014200 MOV DWORD PTR DS:[4201E8],ESI            ; |
00401197  |.  8B35 60234200 MOV ESI,DWORD PTR DS:////这里提示没有软盘信息[<&USER32.GetMessag>; |USER32.GetMessageA

2006-2-14 20:31
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
请参考jtfzp大侠的文章,对软盘破解我也有兴趣。
希楼主多发关于破解软盘的文章,在dos的年代里大家破解软盘的方法只是复制(含加密点),在硬盘破解的文章小之又小。

一个需软盘安装的输入法程序的免盘分析     

--------------------------------------------------------------------------------
【使用工具】 w32dasm
【破解平台】 Win9x/NT/2000/XP
【软件名称】 *六元*金码输入法6.0*
【软件简介】
  该软件是一种形码输入法,规则非常简单,几乎没有什么记忆量。打字时按笔划输入。按一次键输入两笔。每个字最多4码。此外,还定义了6个字根,即“钅、木、日、月、扌、口”,所以叫“六元”金码。愿意学习的请到3daK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3A6@1k6Y4A6H3i4K6u0W2x3e0t1$3i4K6u0W2j5$3!0E0i4@1f1#2i4@1p5@1i4K6R3@1i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1^5i4@1u0p5i4@1u0p5i4@1f1K6i4K6R3H3i4K6R3J5
  该软件采用软盘安装,安装后需要注册码才能正常使用。注册机请大虾去做,我就不参与了。(我只做了个另类的)。现在有些笔记本,甚至台式机都不用软驱了,这里我谈谈如何解决软盘的问题。

【加壳方式】 Pecompact
【破解声明】 为硬盘安装带来方便:)好的输入法需要推广啊!
--------------------------------------------------------------------------------
【破解内容】
1、先用FI查一下安装文件,发现是用PECOMPACT1.40.5压缩过的,找UNPECOMPACT1.32脱了它,脱后的文件存为unpacked.exe。
2、用w32dasm反汇编unpacked.exe,用findtext功能查找“getdrivetypea”。既然只能复制到软盘中才能安装,没有软盘就不能安装,那么安装程序可能用这个函数来检查。请看下面的代码:

:0040140F 56                      push esi

* Reference To: KERNEL32.GetDriveTypeA, Ord:0000h              //程序中只有这一个地方使用这个函授//
                                  |
:00401410 FF1518144100            Call dword ptr [00411418]
:00401416 83F802                  cmp eax, 00000002           //调用后的返回值在eax中,与00000002作比较。把这里的2改为3吧。2表示软盘,3表示硬盘。//
:00401419 741A                    je 00401435                 //这里如果不跳,下面就要弹出错误对话框了。//
:0040141B 53                      push ebx
:0040141C 68ECCD4000              push 0040CDEC
:00401421 68BCCD4000              push 0040CDBC
:00401426 FF7508                  push [ebp+08]

* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:00401429 FF1520154100            Call dword ptr [00411520]
:0040142F 53                      push ebx
:00401430 E84B1F0000              call 00403380

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401419(C)
|

* Reference To: KERNEL32.GetVersion, Ord:0000h
                                  |
:00401435 FF151C144100            Call dword ptr [0041141C]
:0040143B B900000080              mov ecx, 80000000
:00401440 C705B0ED400001000000    mov dword ptr [0040EDB0], 00000001
:0040144A 3BC1                    cmp eax, ecx
:0040144C 7206                    jb 00401454
:0040144E 891DB0ED4000            mov dword ptr [0040EDB0], ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040144C(C)
|
:00401454 A0B0EA4000              mov al, byte ptr [0040EAB0]
:00401459 3C41                    cmp al, 41                //这里是检测当前盘根目录下有没有LYJMX.DAT文件,如果没有就byby了。看这里,16进制的41不是字母A吗?al中保存的是当前盘符。如果在D盘运行安装程序,al的值就是字符“D”。把41改为44。16进制44就是字符D。//
:0040145B 742F                    je 0040148C
:0040145D 3C61                    cmp al, 61
:0040145F 742B                    je 0040148C
:00401461 3C42                    cmp al, 42
:00401463 741E                    je 00401483
:00401465 3C62                    cmp al, 62
:00401467 741A                    je 00401483
:00401469 53                      push ebx
:0040146A 68ECCD4000              push 0040CDEC
:0040146F 6888CD4000              push 0040CD88
:00401474 FF7508                  push [ebp+08]

* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:00401477 FF1520154100            Call dword ptr [00411520]
:0040147D 53                      push ebx
:0040147E E8FD1E0000              call 00403380

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401463(C), :00401467(C)
|
:00401483 C605A8ED400002          mov byte ptr [0040EDA8], 02
:0040148A EB07                    jmp 00401493

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040145B(C), :0040145F(C)
|
:0040148C C605A8ED400001          mov byte ptr [0040EDA8], 01

3、经过上面两处修改,然后把三个安装文件全部复制到D盘的根目录下。运行setup.exe就能安装了。(放在其它盘中安装会有警告信息。请尊重软件版权。盗版责任自负。)
   至于安装后的注册,我说一点点:安装程序把用户序列号放在lyjm.mb这个码表文件中。注册后的信息也放在lyjm.mb中,只要把c7处的00改为ff就行了。注册码是明码,放在esi中。只要跟踪lyjm.ime就能得到。至于注册机,就请高手来吧。
4、问个问题,这个东西如何用OD来调试呢?lyjm.ime是dll文件,我只会在98中用trw2000来调试。还请高手指点
2006-2-14 21:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bit
28
呵呵,这个方法我经常使用,对付了N个VB程序,其实修改VB字符串的软件很多,我用getvbres0。8的就是不能保存,后来在汉化新世纪找了个基本相同的工具。
2006-2-14 23:10
0
雪    币: 465
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
getvbres 用0.51的不错,有算号器.
2006-2-14 23:50
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
why???????????????
2006-2-16 16:01
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
我很遗憾!!!!!!!!!!1真情换来的是风沙
2006-2-16 16:03
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
真的没想到!许多事情在这里发生了
2006-2-16 16:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
呵呵,有意思……
2006-2-21 23:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
qdxxw==青岛胶州湾?
2006-2-22 08:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
都是些牛人啊,多多学习没有坏处!
2006-8-6 21:08
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
支持!
2006-8-6 22:36
0
雪    币: 241
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
怎么什么也没有?
2006-8-6 22:37
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
38
NO WORDS
2006-8-6 23:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
不错,学习。
2006-8-7 16:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
不懂,我用了GetVBRes 也是无法修改资源???/
2006-8-7 17:07
0
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
我也没说哪里难,下面是我写的一个 CrackMe,你能搞定,你强

http://bbs.pediy.com/showthread.php?s=&threadid=30049
2006-8-7 17:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
新手学习
顶一个
2006-8-11 19:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
文章删除了,怎么看不到?!
2006-8-16 14:22
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
这个文章怎么没有了.,到那里去了,作者是不是重新要发一下啊.
2006-8-17 08:10
0
游客
登录 | 注册 方可回帖
返回