• 标 题:STEP7KNOW_HOW_PROTECT version1.0 (Borland C++编写) 暴破手记 (14千字)
  • 作 者:bluearc
  • 时 间:2002-10-26 0:09:23
  • 链 接:http://bbs.pediy.com

STEP7KNOW_HOW_PROTECT  version1.0 (Borland C++编写) 暴破手记

        说实在的, STEP7KNOW_HOW_PROTECT  version1.0 是用来干什么的,本人到目前还不知道,如果哪位大侠知道的话请告诉一声,好让在下破个明目:)。这是前几天一位网发到邮箱求破的,一直没有时间,今天闲来无事,故拿出来练练手,反正闲着也是闲,呵呵。。。
        编写语言: Borland C++   
        工具:peid 0.8  and  dede2.5    and    hiew6.82
BEGIN !
        一,用peid 0.8打开其可执行文件S7know.exe,发现程序没有加壳,由Borland C++编写。。。什么?Borland C++ !头晕。。。转念一想,用dede应该可以吧。。。试试!
        二,用dede2.5载入S7know.exe。。。。呵呵。。。。载入成功!这下好办啦。。。让我们开始吧。
      三,在dede2.5窗口中选取“procedures”,发现unit name 窗口中共有四个项目,分别是“unitabout”    “unitmain”    “unitreg”    “unitselect”  在这里。。。当然是先查看“unitreg”了。。。可是当我打开“unitreg”时却发现里面什么也没有。。。怎么办呢,还是选取“unitabout”看看:右边窗口里面有很多项目,选择右边窗口里的“formshow”看看,双击打开后出现以下这些不是垃圾的垃圾。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|
00407A73  E8E4870800            call    0049025C
00407A78  BE05000000            mov    esi, $00000005
00407A7D  8D45FC                lea    eax, [ebp-$04]

* Reference to field TAboutBox.OFFS_0304
|
00407A80  89B304030000          mov    [ebx+$0304], esi
00407A86  8BD6                  mov    edx, esi
00407A88  66C745E80800          mov    word ptr [ebp-$18], $0008

|
00407A8E  E80D280900            call    0049A2A0
00407A93  FF45F4                inc    dword ptr [ebp-$0C]
00407A96  8B10                  mov    edx, [eax]

* Reference to control TimeCount : TLabel
|
00407A98  8B83FC020000          mov    eax, [ebx+$02FC]

|
00407A9E  E839850500            call    0045FFDC
00407AA3  FF4DF4                dec    dword ptr [ebp-$0C]
00407AA6  8D45FC                lea    eax, [ebp-$04]
00407AA9  BA02000000            mov    edx, $00000002

|
00407AAE  E831280900            call    0049A2E4

* Reference to field TAboutBox.OFFS_0308
|
00407AB3  80BB0803000000        cmp    byte ptr [ebx+$0308], $00
00407ABA  7423                  jz    00407ADF    <--------注意这里!(改00407ABA  7423    jz    00407ADF    为00407ABA  eb23        jmp    00407ADF)
00407ABC  B201                  mov    dl, $01

* Reference to control TimerClose : TTimer
|
00407ABE  8B83F8020000          mov    eax, [ebx+$02F8]

|
00407AC4  E8C3120500            call    00458D8C
00407AC9  33D2                  xor    edx, edx

* Reference to control OKButton : TButton
|
00407ACB  8B83E8020000          mov    eax, [ebx+$02E8]
00407AD1  8B08                  mov    ecx, [eax]

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
        不知你有没有注意上面的“00407ABA  7423        jz    00407ADF”这一句,其作用是:当时间等于五秒时,将延时窗口中的ok按钮的Enabled属性由false变为true。。。呵呵,运行hiew,找到“00407ABA  7423        jz    00407ADF”这一句,改“00407ABA  7423    jz    00407ADF”为“00407ABA  eb23        jmp    00407ADF”      即改“7423”为“eb23”,让它永远不会延时!
          四,运行一下程序看看,发现延时窗口中的ok按钮已经是可用的了(Enabled=true),  而从5到0的倒记时也已经失效,呵呵。。。成功了一小点,但当我把系统时间往后移三十天再运行程序时,发现程序里的很多功能已经失效,说明程序的时间限制还未解决,让我们乘胜追击  ,干掉它! 
          五,回到dede2.5的工作界面,选取unitmain看看,呵呵,里 面也有很多选项,在这里我们还是选“formshow”。。。为什么呢?因为程序决定各种功能是否受限时,一般是在show窗体的时候 进行设置的,当然也会有例外。。。还是那句话:见-鸡-行-事。。。      双击打开后:


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|
00402007  E8D8820900            call    0049A2E4
0040200C  59                    pop    ecx
0040200D  84C9                  test    cl, cl
0040200F  0F84D0030000          jz      004023E5        <------------注意这里!(A)
00402015  66C78504FFFFFFE000    mov    word ptr [ebp+$FFFFFF04], $00E0

* Possible String Reference to: 'Path1'
|
0040201E  BA45C64900            mov    edx, $0049C645
00402023  8D45BC                lea    eax, [ebp-$44]

|
00402026  E8A5810900            call    0049A1D0
0040202B  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
00402031  8B10                  mov    edx, [eax]
00402033  8B85ECFEFFFF          mov    eax, [ebp+$FFFFFEEC]

|
00402039  E85A040300            call    00432498
0040203E  33C9                  xor    ecx, ecx
00402040  BA02000000            mov    edx, $00000002
00402045  8AC8                  mov    cl, al
00402047  83F901                cmp    ecx, +$01
0040204A  1BC0                  sbb    eax, eax
0040204C  F7D8                  neg    eax
0040204E  50                    push    eax
0040204F  8D45BC                lea    eax, [ebp-$44]
00402052  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]

|
00402058  E887820900            call    0049A2E4
0040205D  59                    pop    ecx
0040205E  84C9                  test    cl, cl
00402060  7466                  jz      004020C8
00402062  BA51C64900            mov    edx, $0049C651
00402067  8D45B4                lea    eax, [ebp-$4C]

|
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

004023D1  83FB04                cmp    ebx, +$04
004023D4  0F8E0CFFFFFF          jle    004022E6
004023DA  8B85ECFEFFFF          mov    eax, [ebp+$FFFFFEEC]

|
004023E0  E893FC0200            call    00432078
004023E5  66C78504FFFFFF6401    mov    word ptr [ebp+$FFFFFF04], $0164

* Possible String Reference to: 'Software\S7KNOW\License'
|
004023EE  BA82C64900            mov    edx, $0049C682
004023F3  8D4580                lea    eax, [ebp-$80]

|
004023F6  E8D57D0900            call    0049A1D0
004023FB  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
00402401  8B10                  mov    edx, [eax]
00402403  B101                  mov    cl, $01
00402405  8B85ECFEFFFF          mov    eax, [ebp+$FFFFFEEC]

|
0040240B  E8FCFC0200            call    0043210C
00402410  50                    push    eax
00402411  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]
00402417  8D4580                lea    eax, [ebp-$80]
0040241A  BA02000000            mov    edx, $00000002

|
0040241F  E8C07E0900            call    0049A2E4
00402424  59                    pop    ecx
00402425  84C9                  test    cl, cl
00402427  0F84E6040000          jz      00402913                      <------------注意这里!(B)
0040242D  66C78504FFFFFF7001    mov    word ptr [ebp+$FFFFFF04], $0170

* Possible String Reference to: 'Info1'
|
00402436  BA9AC64900            mov    edx, $0049C69A
0040243B  8D857CFFFFFF          lea    eax, [ebp+$FFFFFF7C]

|。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
00402903  E8DC790900            call    0049A2E4
00402908  8B85ECFEFFFF          mov    eax, [ebp+$FFFFFEEC]

|
0040290E  E865F70200            call    00432078
00402913  66C78504FFFFFF1400    mov    word ptr [ebp+$FFFFFF04], $0014
0040291C  8B9DECFEFFFF          mov    ebx, [ebp+$FFFFFEEC]
00402922  899D30FFFFFF          mov    [ebp+$FFFFFF30], ebx
00402928  85DB                  test    ebx, ebx
0040292A  742A                  jz      00402956                      <------------注意这里!(C)
0040292C  8B03                  mov    eax, [ebx]
0040292E  898534FFFFFF          mov    [ebp+$FFFFFF34], eax
00402934  66C78504FFFFFF0C02    mov    word ptr [ebp+$FFFFFF04], $020C
0040293D  BA03000000            mov    edx, $00000003
00402942  8B8530FFFFFF          mov    eax, [ebp+$FFFFFF30]
00402948  8B08                  mov    ecx, [eax]
0040294A  FF51FC                call    dword ptr [ecx-$04]
0040294D  66C78504FFFFFF0002    mov    word ptr [ebp+$FFFFFF04], $0200
00402956  6683BD06FFFFFF00      cmp    word ptr [ebp+$FFFFFF06], +$00
0040295E  7401                  jz      00402961                    <------------注意这里!(D)
00402960  C3                    ret

00402961  66C78504FFFFFF1802    mov    word ptr [ebp+$FFFFFF04], $0218
0040296A  33D2                  xor    edx, edx
0040296C  89952CFFFFFF          mov    [ebp+$FFFFFF2C], edx
00402972  8D8D2CFFFFFF          lea    ecx, [ebp+$FFFFFF2C]
00402978  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
0040297E  8B85F0FEFFFF          mov    eax, [ebp+$FFFFFEF0]
00402984  8B906C040000          mov    edx, [eax+$046C]
0040298A  8B85F0FEFFFF          mov    eax, [ebp+$FFFFFEF0]

|
00402990  E8F3420000            call    00406C88
00402995  8D952CFFFFFF          lea    edx, [ebp+$FFFFFF2C]
0040299B  8B9DF0FEFFFF          mov    ebx, [ebp+$FFFFFEF0]
004029A1  81C368040000          add    ebx, $00000468
004029A7  8BC3                  mov    eax, ebx

|
004029A9  E866790900            call    0049A314
004029AE  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]
004029B4  8D852CFFFFFF          lea    eax, [ebp+$FFFFFF2C]
004029BA  BA02000000            mov    edx, $00000002

|
004029BF  E820790900            call    0049A2E4
004029C4  66C78504FFFFFF2402    mov    word ptr [ebp+$FFFFFF04], $0224
004029CD  BA15C74900            mov    edx, $0049C715
004029D2  8D8528FFFFFF          lea    eax, [ebp+$FFFFFF28]

|
004029D8  E8F3770900            call    0049A1D0
004029DD  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
004029E3  33C0                  xor    eax, eax
004029E5  898524FFFFFF          mov    [ebp+$FFFFFF24], eax
004029EB  8D9528FFFFFF          lea    edx, [ebp+$FFFFFF28]
004029F1  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
004029F7  8D8D24FFFFFF          lea    ecx, [ebp+$FFFFFF24]
004029FD  8B85F0FEFFFF          mov    eax, [ebp+$FFFFFEF0]
00402A03  0558040000            add    eax, +$00000458

|
00402A08  E82F790900            call    0049A33C
00402A0D  8D8524FFFFFF          lea    eax, [ebp+$FFFFFF24]
00402A13  33D2                  xor    edx, edx
00402A15  899520FFFFFF          mov    [ebp+$FFFFFF20], edx
00402A1B  8D8D20FFFFFF          lea    ecx, [ebp+$FFFFFF20]
00402A21  FF8510FFFFFF          inc    dword ptr [ebp+$FFFFFF10]
00402A27  8B95F0FEFFFF          mov    edx, [ebp+$FFFFFEF0]
00402A2D  81C25C040000          add    edx, $0000045C

|
00402A33  E804790900            call    0049A33C
00402A38  8D9520FFFFFF          lea    edx, [ebp+$FFFFFF20]
00402A3E  8BC3                  mov    eax, ebx

|
00402A40  E883790900            call    0049A3C8
00402A45  50                    push    eax
00402A46  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]
00402A4C  8D8520FFFFFF          lea    eax, [ebp+$FFFFFF20]
00402A52  BA02000000            mov    edx, $00000002

|
00402A57  E888780900            call    0049A2E4
00402A5C  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]
00402A62  8D8524FFFFFF          lea    eax, [ebp+$FFFFFF24]
00402A68  BA02000000            mov    edx, $00000002

|
00402A6D  E872780900            call    0049A2E4
00402A72  FF8D10FFFFFF          dec    dword ptr [ebp+$FFFFFF10]
00402A78  8D8528FFFFFF          lea    eax, [ebp+$FFFFFF28]
00402A7E  BA02000000            mov    edx, $00000002

|
00402A83  E85C780900            call    0049A2E4
00402A88  59                    pop    ecx
00402A89  84C9                  test    cl, cl
00402A8B  7457                  jz      00402AE4                    <------------注意这里!(E)
00402A8D  66C78504FFFFFF3002    mov    word ptr [ebp+$FFFFFF04], $0230

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
              您看到了上面的“ <------------注意这里!”从“(A)”到“(E)”吗?看到就好办了,它们都是jz跳转语句,跳转(A)的作用是当使用时间达到三十天时限制软件的使用,但是当我们改“0040200F  0F84D0030000          jz      004023E5 ”为“0040200F  90909090909090        nop      004023E5 ”后,运行程序时出现错误窗口,说明该程序在后面还有检查代码完整性的地方,不用说,当然是上面的“ <------------注意这里!”从“(B)”到“(E)”了,不信你试试!通通杀了。。。运行 hiew6.82:
    1,0040200F  0F84D0030000    jz    004023E5 为0040200F  90909090909090  nop      004023E5
      2,改00402427  0F84E6040000      jz      00402913为00402427  0F84E6040000  jz    00402913
      3,改0040292A  742A        jz      00402956  为0040292A  752A            jz      00402956 
      4,改0040295E  7401          jz      00402961  为0040295E  7501              jz      00402961 
      5,改00402A8B  7457        jz      00402AE4  为00402A8B  7557        jz      00402AE4 
                                       
                                              整个世界-----------清静了-------------------

            六,注册机:
.386
locals
jumps
.model flat,STDCALL
extrn MessageBoxA:Proc
extrn CreateFileA:Proc
extrn GetFileSizeA:Proc
extrn WriteFile:Proc
extrn SetFilePointer:Proc
extrn CloseHandle:Proc
extrn ExitProcess:Proc
extrn GetFileSize:Proc
.data
GENERIC_WRITE            equ    40000000h
OPEN_EXISTING            equ    3
FILE_BEGIN            equ    0
cur_byte db ?
liczba dd 0
uchwyt dd ?
zmiany:
db 144,15,22,0,0,144,16,22,0,0,144,17,22,0,0,144,18,22,0,0,144,19,22,0,0,144,20,22,0,0,144,21,22,0,0,235,96,22,0,0,235,19,23,0,0,235,198,23,0,0,235,121,24,0,0,235,179,25,0,0,133,40,26,0,0,235,42,31,0,0,235,94,31,0,0,235,139,32,0,0,117,186,112,0,0,0
num_mod dd 17
program_name db 'S7KNOW.exe',0
bad_size db '',0
main_error db '',0
success db '',0
other_errors db '',0
file_size dd 822784
nazwa_pliku db 'S7KNOW.exe',0
.code
start:
push 0
push 0
push OPEN_EXISTING
push 0
push 0
push GENERIC_WRITE
push offset nazwa_pliku
call CreateFileA
cmp eax,0ffffffffh
jz error
mov uchwyt,eax
push 0
push uchwyt
call GetFileSize
cmp eax,file_size
jnz error_size
mov ecx,0
modify:
push ecx

mov esi,offset zmiany
imul eax,ecx,5
add esi,eax
lodsb
mov cur_byte,al
lodsd
push FILE_BEGIN
push 0
push eax
push uchwyt
call SetFilePointer
mov liczba,0
push 0
push offset liczba
push 1
push offset cur_byte
push uchwyt
call WriteFile
test eax,eax
jz error
pop ecx
inc ecx

cmp ecx,num_mod
jne modify
push 0
push offset program_name
push offset success
push 0
call MessageBoxA
end_:
push uchwyt
call CloseHandle
push 0
call ExitProcess
error_size:
push 0
push offset main_error
push offset other_errors
push 0
call MessageBoxA
jmp end_
error:
push 0
push offset main_error
push offset bad_size
push 0
call MessageBoxA
jmp end_
end start
       
            七,收工!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转载请保持完整性~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              作者:飞龙狗狗                邮箱:bluearc_arc@hotmail.com                      QQ:40116000