首页
社区
课程
招聘
有人能干掉这个么,不许爆破————
发表于: 2009-5-3 09:35 7572

有人能干掉这个么,不许爆破————

2009-5-3 09:35
7572
昨晚上弄了三个小时,就是不能解决,郁闷中。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
干掉那个TIMER触发的对话框?
2009-5-3 10:17
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对话框很容易干的,就是找出注册码比较困难。。。
2009-5-3 10:49
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
什么程序 来看下
2009-5-3 15:37
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
干掉 警示框, 不就是 破解了嗎?

刪去了輸入序號對話框 还是 和 輸入 正確序號 回到同一地址??
2009-5-3 17:54
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我找到的关键代码
00401037   .  55            PUSH EBP
00401038   .  8BEC          MOV EBP,ESP
0040103A   .  6A FF         PUSH -1
0040103C   .  68 70204000   PUSH crack4.00402070
00401041   .  68 90124000   PUSH <JMP.&MSVCRT._except_handler3>       ;  SE 处理程序安装
00401046   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040104C   .  50            PUSH EAX
0040104D   .  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401054   .  83EC 28       SUB ESP,28
00401057   .  53            PUSH EBX
00401058   .  56            PUSH ESI
00401059   .  57            PUSH EDI
0040105A   .  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
0040105D   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                 ; /s
00401060   .  E8 1D020000   CALL <JMP.&MSVCRT.strlen>                 ; \strlen
00401065   .  59            POP ECX
00401066   .  8BC8          MOV ECX,EAX
00401068   .  894D D0       MOV DWORD PTR SS:[EBP-30],ECX
0040106B   .  33DB          XOR EBX,EBX
0040106D   .  BE 10304000   MOV ESI,crack4.00403010                   ;  ASCII ">RPQ]A"
00401072   .  8D7D D8       LEA EDI,DWORD PTR SS:[EBP-28]
00401075   .  A5            MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI>
00401076   .  66:A5         MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]
00401078   .  A4            MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
00401079   .  33C0          XOR EAX,EAX
0040107B   .  8D7D DF       LEA EDI,DWORD PTR SS:[EBP-21]
0040107E   .  66:AB         STOS WORD PTR ES:[EDI]
00401080   .  AA            STOS BYTE PTR ES:[EDI]
00401081   .  894D E4       MOV DWORD PTR SS:[EBP-1C],ECX
00401084   .  83F9 06       CMP ECX,6
00401087   .  74 04         JE SHORT crack4.0040108D
00401089   .  33C0          XOR EAX,EAX
0040108B   .  EB 4A         JMP SHORT crack4.004010D7                 ;  长度不为6错误返回
0040108D   >  895D FC       MOV DWORD PTR SS:[EBP-4],EBX
00401090   .  8D85 08000000 LEA EAX,DWORD PTR SS:[EBP+8]
00401096   .  FFD0          CALL EAX                                  ;  调用ebp+8指向的函数地址(我执行到这里就出错)
00401098   .  EB 32         JMP SHORT crack4.004010CC                 ;  跳转
0040109A   .  6A 01         PUSH 1                                    ;  貌似永远都不能执行这两句语句?
0040109C   .  58            POP EAX
0040109D   .  C3            RETN
0040109E   .  8B65 E8       MOV ESP,DWORD PTR SS:[EBP-18]
004010A1   .  8B5D D0       MOV EBX,DWORD PTR SS:[EBP-30]
004010A4   .  33D2          XOR EDX,EDX
004010A6   .  8B75 08       MOV ESI,DWORD PTR SS:[EBP+8]
004010A9   .  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
004010AC   .  2BF0          SUB ESI,EAX
004010AE   >  FF4D E4       DEC DWORD PTR SS:[EBP-1C]
004010B1   .  8D4C15 D8     LEA ECX,DWORD PTR SS:[EBP+EDX-28]
004010B5   .  0FBE040E      MOVSX EAX,BYTE PTR DS:[ESI+ECX]
004010B9   .  83F0 36       XOR EAX,36
004010BC   .  2B45 E4       SUB EAX,DWORD PTR SS:[EBP-1C]
004010BF   .  0FBE09        MOVSX ECX,BYTE PTR DS:[ECX]
004010C2   .  2BC8          SUB ECX,EAX
004010C4   .  03D9          ADD EBX,ECX
004010C6   .  42            INC EDX
004010C7   .  83FA 06       CMP EDX,6
004010CA   .^ 7C E2         JL SHORT crack4.004010AE
004010CC   >  834D FC FF    OR DWORD PTR SS:[EBP-4],FFFFFFFF
004010D0   .  33C0          XOR EAX,EAX
004010D2   .  85DB          TEST EBX,EBX
004010D4   .  0F94C0        SETE AL
004010D7   >  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
004010DA   .  64:890D 00000>MOV DWORD PTR FS:[0],ECX
004010E1   .  5F            POP EDI
004010E2   .  5E            POP ESI
004010E3   .  5B            POP EBX
004010E4   .  C9            LEAVE
004010E5   .  C3            RETN

我感觉好像这个程序没有真正大注册码。。。
这个判断的函数好像永远都不能返回1
不知哪位解决了的。给讲解一下?
2009-5-3 19:43
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
rabbit
2009-5-3 22:05
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼上真NX!
2009-5-4 07:50
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
9
个人感觉他的算法有问题
2009-5-4 14:04
0
雪    币: 91
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
点击确定程序就crash了..?
2009-5-4 14:36
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
什么程序???
2009-5-4 16:51
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
下载下来看看   我估计是不行的
2009-5-4 17:46
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
7楼能讲解下吗,太谢谢了。
2009-5-4 22:15
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
玩的是 _except_handler3
详情我就不讲了. 有兴趣的上 Google.

安装
0040103C   .  68 70204000   push    00402070
00401041   .  68 90124000   push    <jmp.&MSVCRT._except_handler3>

00402070  FF FF FF FF 9A 10 40 00 9E 10 40 00 00 00 00 00
 


确认user输入为6个字节后, 引发例外
00401096   .  FFD0          CALL EAX


先来这里(可先下个软断即知)
0040109A   .  6A 01         push    1
0040109C   .  58            pop     eax
0040109D   .  C3            ret


再来这里(可先下个软断即知), 同时检查注册码
0040109E   .  8B65 E8       mov     esp, [ebp-18]    ;待會要直接回到 00401236
004010A1   .  8B5D D0       mov     ebx, [ebp-30]
004010A4   .  33D2          xor     edx, edx
004010A6   .  8B75 08       mov     esi, [ebp+8]
004010A9   .  8D45 D8       lea     eax, [ebp-28]
004010AC   .  2BF0          sub     esi, eax
004010AE   >  FF4D E4       dec     dword ptr [ebp-1C]
004010B1   .  8D4C15 D8     lea     ecx, [ebp+edx-28]
004010B5   .  0FBE040E      movsx   eax, byte ptr [esi+ecx]
004010B9   .  83F0 36       xor     eax, 36
004010BC   .  2B45 E4       sub     eax, [ebp-1C]
004010BF   .  0FBE09        movsx   ecx, byte ptr [ecx]
004010C2   .  2BC8          sub     ecx, eax
004010C4   .  03D9          add     ebx, ecx
004010C6   .  42            inc     edx
004010C7   .  83FA 06       cmp     edx, 6
004010CA   .^ 7C E2         jl      short 004010AE
004010CC   >  834D FC FF    or      dword ptr [ebp-4], FFFFFFFF
004010D0   .  33C0          xor     eax, eax
004010D2   .  85DB          test    ebx, ebx
004010D4   .  0F94C0        sete    al
004010D7   >  8B4D F0       mov     ecx, [ebp-10]
004010DA   .  64:890D 00000>mov     fs:[0], ecx
004010E1   .  5F            pop     edi
004010E2   .  5E            pop     esi
004010E3   .  5B            pop     ebx
004010E4   .  C9            leave
004010E5   .  C3            ret

2009-5-4 23:18
0
雪    币: 167
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
经sessiondiy提醒,发现自己搞错了,嘿嘿,谢谢sessiondiy
2009-5-5 00:15
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
typedef struct _SCOPETABLE
{
    DWORD       previousTryLevel;
    DWORD       lpfnFilter        ----+
    DWORD       lpfnHandler       -+  |
} SCOPETABLE, *PSCOPETABLE;        |  |
                                   |  |
                                   |  |
  /*Compiler-level SEH*/           |  |
                                   |  |
                                   |  |
try {                              |  |
    // guarded body of code        |  |
}                                  |  |
except (filter-expression) {       |<-+
    // exception-handler block   <-|
}


奇怪的是控制流从未从 _except 块返回,尽管 __except_handler3 调用了它。
__except_handler3 如何调用的 _except,而控制流又为何从不返回呢?因为一个 CALL 指令将返回地址压入堆栈,可以认为这就打乱了堆栈。如果察看一下为 _except 块生成的代码,就会发现它所作的第一件事就是将 EXCEPTION_REGISTRATION 结构体之后的8字节处的 DWORD 加载到 ESP 寄存器中。作为其 prologue 代码的一部分,函数将 ESP 的值保存起来,这样 _except 之后还可以将其取回
0040109E   .  8B65 E8       mov     esp, [ebp-18]    ;待会要直接回到 00401236


以上取自下列(最终皆以VC的为主):

深入研究 Win32 结构化异常处理
对于结构化异常处理(SEH)的进一步探索
2009-5-5 01:24
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
太谢谢sessiondiy 了。。
2009-5-5 19:59
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
来膜拜牛人de
2009-5-8 08:09
0
游客
登录 | 注册 方可回帖
返回
//