首页
社区
课程
招聘
SoftSentry 2.11脱壳
发表于: 2005-10-24 18:26 6952

SoftSentry 2.11脱壳

2005-10-24 18:26
6952
学日语练打字 1.0

软件语言: 简体中文
软件类别: 国产软件/共享版/电脑学习
运行环境: Win9x/Me/NT/2000/XP
界面预览: 无
软件大小: 243KB
软件更新: 2005-3-4
下载地址:http://www.pcdog.com/soft/54214.htm

加壳方式:SoftSentry 2.11 -> 20/20 Software

破解平台:WIN200

一。脱壳

00480E90 >  55              push ebp//进入OD后断在这!
00480E91    8BEC            mov ebp,esp
00480E93    83EC 64         sub esp,64
00480E96    53              push ebx
00480E97    56              push esi
00480E98    57              push edi
00480E99    E9 50000000     jmp 学日语练.00480EEE

00480EEE    C745 E8 0000000>mov dword ptr ss:[ebp-18],0
00480EF5    8D45 BC         lea eax,dword ptr ss:[ebp-44]
00480EF8    50              push eax
00480EF9    FF15 98A44800   call dword ptr ds:[<&KERNEL32.GetSt>; kernel32.GetStartupInfoA
00480EFF    F645 E8 01      test byte ptr ss:[ebp-18],1
00480F03    0F84 10000000   je 学日语练.00480F19
00480F09    8B45 EC         mov eax,dword ptr ss:[ebp-14]
00480F0C    25 FFFF0000     and eax,0FFFF
00480F11    8945 14         mov dword ptr ss:[ebp+14],eax
00480F14    E9 07000000     jmp 学日语练.00480F20

00480F20    6A 00           push 0
00480F22    FF15 A0A44800   call dword ptr ds:[<&KERNEL32.GetMo>; kernel32.GetModuleHandleA
00480F28    8945 08         mov dword ptr ss:[ebp+8],eax
00480F2B    C745 0C 0000000>mov dword ptr ss:[ebp+C],0
00480F32    FF15 84A44800   call dword ptr ds:[<&KERNEL32.GetCo>; kernel32.GetCommandLineA
00480F38    8945 10         mov dword ptr ss:[ebp+10],eax
00480F3B    8B45 08         mov eax,dword ptr ss:[ebp+8]
00480F3E    8945 B4         mov dword ptr ss:[ebp-4C],eax
00480F41    66:C705 B861480>mov word ptr ds:[4861B8],0
00480F4A    66:C705 429C480>mov word ptr ds:[489C42],0
00480F53    837D 0C 00      cmp dword ptr ss:[ebp+C],0
00480F57    0F85 17000000   jnz 学日语练.00480F74
00480F5D    8B4D 08         mov ecx,dword ptr ss:[ebp+8]
00480F60    E8 8B0E0000     call 学日语练.00481DF0
00480F65    85C0            test eax,eax
00480F67    0F85 07000000   jnz 学日语练.00480F74

00480F74    68 04010000     push 104
00480F79    68 709A4800     push 学日语练.00489A70
00480F7E    8B45 08         mov eax,dword ptr ss:[ebp+8]
00480F81    50              push eax
00480F82    FF15 88A44800   call dword ptr ds:[<&KERNEL32.GetMo>; kernel32.GetModuleFileNameA
00480F88    85C0            test eax,eax
00480F8A    0F85 07000000   jnz 学日语练.00480F97

00480F97    8B55 14         mov edx,dword ptr ss:[ebp+14]
00480F9A    8B4D 08         mov ecx,dword ptr ss:[ebp+8]
00480F9D    E8 9E0E0000     call 学日语练.00481E40
00480FA2    85C0            test eax,eax
00480FA4    0F85 1B000000   jnz 学日语练.00480FC5

00480FC5    C745 B0 0100000>mov dword ptr ss:[ebp-50],1
00480FCC    8B45 10         mov eax,dword ptr ss:[ebp+10]
00480FCF    A3 D0994800     mov dword ptr ds:[4899D0],eax
00480FD4    BA 509A4800     mov edx,学日语练.00489A50
00480FD9    8D0D B1994800   lea ecx,dword ptr ds:[4899B1]
00480FDF    E8 CC2B0000     call 学日语练.00483BB0
00480FE4    E8 F72B0000     call 学日语练.00483BE0
00480FE9    85C0            test eax,eax
00480FEB    0F84 18000000   je 学日语练.00481009
00480FF1    66:C705 B861480>mov word ptr ds:[4861B8],1
00480FFA    C705 68614800 0>mov dword ptr ds:[486168],1
00481004    E9 9A020000     jmp 学日语练.004812A3

00481009    B9 01000000     mov ecx,1
0048100E    E8 7D2A0000     call 学日语练.00483A90
00481013    33C0            xor eax,eax                       “86362”
00481015    66:A1 429C4800  mov ax,word ptr ds:[489C42]
0048101B    F6C4 C0         test ah,0C0
0048101E    0F85 2E000000   jnz 学日语练.00481052

00481024    33C0            xor eax,eax
00481026    66:A1 429C4800  mov ax,word ptr ds:[489C42]
0048102C    F6C4 10         test ah,10
0048102F    0F84 1D000000   je 学日语练.00481052
00481035    6A 00           push 0
00481037    68 03800000     push 8003
0048103C    68 11010000     push 111
00481041    A1 909B4800     mov eax,dword ptr ds:[489B90]
00481046    50              push eax
00481047    FF15 34A54800   call dword ptr ds:[<&USER32.SendMes>; user32.SendMessageA
0048104D    E9 05000000     jmp 学日语练.00481057

00481052    E8 19060000     call 学日语练.00481670
00481057    833D 70614800 0>cmp dword ptr ds:[486170],0
0048105E    0F84 16000000   je 学日语练.0048107A
00481064    8B4D B0         mov ecx,dword ptr ss:[ebp-50]
00481067    E8 442C0000     call 学日语练.00483CB0
//这里是索要注册码的地方!跳出注册窗口,要求注册,先点“试用”,跳过去
0048106C    8945 B0         mov dword ptr ss:[ebp-50],eax
0048106F    8B4D B0         mov ecx,dword ptr ss:[ebp-50]
00481072    E8 F92C0000     call 学日语练.00483D70
00481077    8945 B0         mov dword ptr ss:[ebp-50],eax
0048107A    837D B0 01      cmp dword ptr ss:[ebp-50],1
0048107E    0F85 27000000   jnz 学日语练.004810AB
00481084    33C0            xor eax,eax
00481086    66:A1 B8614800  mov ax,word ptr ds:[4861B8]
0048108C    85C0            test eax,eax
0048108E    0F84 17000000   je 学日语练.004810AB
00481094    33C0            xor eax,eax
00481096    66:A1 AF994800  mov ax,word ptr ds:[4899AF]
0048109C    85C0            test eax,eax
0048109E    0F84 07000000   je 学日语练.004810AB
004810A4    66:FF0D AF99480>dec word ptr ds:[4899AF]
004810AB    837D B0 01      cmp dword ptr ss:[ebp-50],1
004810AF    0F85 0C010000   jnz 学日语练.004811C1
004810B5    33C0            xor eax,eax
004810B7    66:A1 B8614800  mov ax,word ptr ds:[4861B8]
004810BD    85C0            test eax,eax
004810BF    0F84 FC000000   je 学日语练.004811C1
004810C5    33C0            xor eax,eax
004810C7    66:A1 7C614800  mov ax,word ptr ds:[48617C]
004810CD    A8 02           test al,2
004810CF    0F85 1E000000   jnz 学日语练.004810F3
004810D5    833D 78614800 0>cmp dword ptr ds:[486178],0
004810DC    0F84 11000000   je 学日语练.004810F3
004810E2    33C0            xor eax,eax
004810E4    66:A1 7C614800  mov ax,word ptr ds:[48617C]
004810EA    83C8 02         or eax,2
004810ED    66:A3 7C614800  mov word ptr ds:[48617C],ax
004810F3    33C0            xor eax,eax
004810F5    66:A1 7C614800  mov ax,word ptr ds:[48617C]
004810FB    A8 02           test al,2
004810FD    0F84 2F000000   je 学日语练.00481132

00481132    33C0            xor eax,eax
00481134    66:A1 7C614800  mov ax,word ptr ds:[48617C]
0048113A    A8 01           test al,1
0048113C    0F85 7F000000   jnz 学日语练.004811C1
00481142    833D 74614800 0>cmp dword ptr ds:[486174],0
00481149    0F84 35000000   je 学日语练.00481184

00481184    833D 74614800 0>cmp dword ptr ds:[486174],0
0048118B    0F84 30000000   je 学日语练.004811C1
00481191    0FBF05 C1994800 movsx eax,word ptr ds:[4899C1]
00481198    85C0            test eax,eax
0048119A    0F8D 21000000   jge 学日语练.004811C1

004811C1    33C0            xor eax,eax
004811C3    66:A1 7C614800  mov ax,word ptr ds:[48617C]
004811C9    85C0            test eax,eax
004811CB    0F84 D2000000   je 学日语练.004812A3
004811D1    837D B0 01      cmp dword ptr ss:[ebp-50],1
004811D5    0F85 C8000000   jnz 学日语练.004812A3
004811DB    33C0            xor eax,eax
004811DD    66:A1 B8614800  mov ax,word ptr ds:[4861B8]
004811E3    85C0            test eax,eax
004811E5    0F84 B8000000   je 学日语练.004812A3

004812A3    8D55 B4         lea edx,dword ptr ss:[ebp-4C]
004812A6    8D4D AC         lea ecx,dword ptr ss:[ebp-54]
004812A9    E8 12010000     call 学日语练.004813C0
004812AE    8945 B8         mov dword ptr ss:[ebp-48],eax
004812B1    6A 00           push 0
004812B3    6A 00           push 0
004812B5    6A 10           push 10
004812B7    A1 909B4800     mov eax,dword ptr ds:[489B90]
004812BC    50              push eax
004812BD    FF15 34A54800   call dword ptr ds:[<&USER32.SendMes>; user32.SendMessageA
004812C3    833D 80614800 0>cmp dword ptr ds:[486180],2
004812CA    0F84 48000000   je 学日语练.00481318
004812D0    837D B0 01      cmp dword ptr ss:[ebp-50],1
004812D4    0F85 3E000000   jnz 学日语练.00481318
004812DA    33C0            xor eax,eax
004812DC    66:A1 B8614800  mov ax,word ptr ds:[4861B8]
004812E2    85C0            test eax,eax
004812E4    0F84 2E000000   je 学日语练.00481318
004812EA    8B45 08         mov eax,dword ptr ss:[ebp+8]            ;基地址 EAX=00400000
004812ED    50              push eax
004812EE    68 A8614800     push 学日语练.004861A8                  ; ASCII "sSENTRYWndClass"
004812F3    FF15 F4A44800   call dword ptr ds:[<&USER32.Unregis>; user32.UnregisterClassA
004812F9    33C0            xor eax,eax
004812FB    66:A1 BC614800  mov ax,word ptr ds:[4861BC]
00481301    85C0            test eax,eax
00481303    0F84 0F000000   je 学日语练.00481318
00481309    8B45 B4         mov eax,dword ptr ss:[ebp-4C]
0048130C    50              push eax
0048130D    8D55 AC         lea edx,dword ptr ss:[ebp-54]
00481310    8B4D B8         mov ecx,dword ptr ss:[ebp-48]
00481313    E8 38000000     call 学日语练.00481350       //F7进去!不然也挂了
00481318    837D AC 00      cmp dword ptr ss:[ebp-54],0
0048131C    0F84 08000000   je 学日语练.0048132A
00481322    8B4D AC         mov ecx,dword ptr ss:[ebp-54]
00481325    E8 B6320000     call 学日语练.004845E0
0048132A    8B45 B0         mov eax,dword ptr ss:[ebp-50]
0048132D    50              push eax
0048132E    FF15 8CA44800   call dword ptr ds:[<&KERNEL32.ExitP>; kernel32.ExitProcess
//到这里就挂了!

CALL 00481350

00481350    56              push esi
00481351    57              push edi
00481352    8BF2            mov esi,edx
00481354    8B7C24 0C       mov edi,dword ptr ss:[esp+C]
00481358    8B51 02         mov edx,dword ptr ds:[ecx+2]           ;异常
0048135B    3351 06         xor edx,dword ptr ds:[ecx+6]
0048135E    3351 0A         xor edx,dword ptr ds:[ecx+A]            ;F4
00481361    03FA            add edi,edx                            ; edx=006006C    OEP
00481363    33D2            xor edx,edx
00481365    8B41 06         mov eax,dword ptr ds:[ecx+6]
00481368    42              inc edx
00481369    314497 FC       xor dword ptr ds:[edi+edx*4-4],eax
0048136D    42              inc edx
0048136E    8B41 0A         mov eax,dword ptr ds:[ecx+A]
00481371    314497 FC       xor dword ptr ds:[edi+edx*4-4],eax
00481375    83FA 14         cmp edx,14
00481378  ^ 7C EB           jl short 学日语练.00481365
0048137A    8B0E            mov ecx,dword ptr ds:[esi]
0048137C    E8 5F320000     call 学日语练.004845E0
00481381    C706 00000000   mov dword ptr ds:[esi],0
00481387    66:833D B861480>cmp word ptr ds:[4861B8],0
0048138F    74 0C           je short 学日语练.0048139D
00481391    66:833D C061480>cmp word ptr ds:[4861C0],0
00481399    74 02           je short 学日语练.0048139D
0048139B    FFD7            call edi                                ;飞向光明的地方!  
0048139D    6A 00           push 0
0048139F    68 38624800     push 学日语练.00486238                  ; ASCII "softSENTRY"
004813A4    68 28624800     push 学日语练.00486228                  ; ASCII "Failed to run!"
004813A9    6A 00           push 0
004813AB    FF15 24A54800   call dword ptr ds:[<&USER32.Message>; user32.MessageBoxA

进入:   call esi

0046006C    55              push ebp //LordPE完全DUMP这个进程
0046006D    8BEC            mov ebp,esp
0046006F    83C4 F0         add esp,-10
00460072    B8 A4FE4500     mov eax,学日语练.0045FEA4
00460077    E8 1C65FAFF     call 学日语练.00406598
0046007C    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
00460081    8B00            mov eax,dword ptr ds:[eax]
00460083    E8 5045FFFF     call 学日语练.004545D8
00460088    8B0D C8204600   mov ecx,dword ptr ds:[4620C8]       ; 学日语练.00463C84
0046008E    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
00460093    8B00            mov eax,dword ptr ds:[eax]
00460095    8B15 ECC64500   mov edx,dword ptr ds:[45C6EC]       ; 学日语练.0045C738
0046009B    E8 5045FFFF     call 学日语练.004545F0
004600A0    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
004600A5    8B00            mov eax,dword ptr ds:[eax]
004600A7    E8 C445FFFF     call 学日语练.00454670
004600AC    E8 8B40FAFF     call 学日语练.0040413C
004600B1    8D40 00         lea eax,dword ptr ds:[eax]

出动ImportREC,FixDump,正常运行!553KB->608KB!运行脱壳后的程序已经没有了注册窗口,OK!可以收工了!

二。注册算法

序列号:86362
用户名:pendan2001
单位名:Freedom Cracker
试炼码:yufeifish-12345678-thormars
   
BP GetDlgItemTextA

返回到这里
00480338    8B1D 10A54800   mov ebx,dword ptr ds:[<&USER32.GetDlg>; user32.GetDlgItemTextA
0048033E    8B4424 10       mov eax,dword ptr ss:[esp+10]
00480342    68 FFFF0000     push 0FFFF
00480347    50              push eax
00480348    8D8F 02100000   lea ecx,dword ptr ds:[edi+1002]
0048034E    51              push ecx
0048034F    56              push esi
00480350    FFD3            call ebx
00480352    85C0            test eax,eax
00480354    74 10           je short 学日语练.00480366
00480356    8B4C24 10       mov ecx,dword ptr ss:[esp+10]
0048035A    E8 71470000     call 学日语练.00484AD0
0048035F    8904BD E0994800 mov dword ptr ds:[edi*4+4899E0],eax         “pendan2001”
00480366    47              inc edi
00480367    83FF 14         cmp edi,14
0048036A  ^ 7C D2           jl short 学日语练.0048033E
。。。。。
00480394    FF15 14A54800   call dword ptr ds:[<&USER32.GetDlgIte>; user32.GetDlgItem   
0048039A    85C0            test eax,eax
0048039C    74 17           je short 学日语练.004803B5
0048039E    8BCE            mov ecx,esi
004803A0    E8 DBF4FFFF     call 学日语练.0047F880
004803A5    EB 0E           jmp short 学日语练.004803B5
004803A7    BA 309A4800     mov edx,学日语练.00489A30
004803AC    8B4C24 58       mov ecx,dword ptr ss:[esp+58]
004803B0    E8 EBFAFFFF     call 学日语练.0047FEA0
004803B5    33C0            xor eax,eax
004803B7    5D              pop ebp
004803B8    5F              pop edi
004803B9    5E              pop esi
004803BA    5B              pop ebx
004803BB    83C4 3C         add esp,3C
004803BE    C2 1000         retn 10

CALL 0047F880

0047F8BE    6A 32           push 32
0047F8C0    8B4C24 18       mov ecx,dword ptr ss:[esp+18]
0047F8C4    50              push eax
0047F8C5    68 01100000     push 1001
0047F8CA    51              push ecx
0047F8CB    FF15 10A54800   call dword ptr ds:[<&USER32.GetDlgIte>; user32.GetDlgItemTextA
0047F8D1    66:894424 10    mov word ptr ss:[esp+10],ax
0047F8D6    8D7C24 50       lea edi,dword ptr ss:[esp+50]  ;“ABCDEFGH-12345678-KLMNOPQ”
0047F8DA    B9 FFFFFFFF     mov ecx,-1
0047F8DF    2BC0            sub eax,eax
0047F8E1    F2:AE           repne scas byte ptr es:[edi]
0047F8E3    F7D1            not ecx
0047F8E5    2BF9            sub edi,ecx
0047F8E7    8BD1            mov edx,ecx
0047F8E9    C1E9 02         shr ecx,2
0047F8EC    8BF7            mov esi,edi
0047F8EE    8DBC24 84000000 lea edi,dword ptr ss:[esp+84]
0047F8F5    F3:A5           rep movs dword ptr es:[edi],dword ptr>
0047F8F7    8BCA            mov ecx,edx
0047F8F9    83E1 03         and ecx,3
0047F8FC    F3:A4           rep movs byte ptr es:[edi],byte ptr d>
0047F8FE    66:C74424 12 00>mov word ptr ss:[esp+12],0
0047F905    66:833D 489C480>cmp word ptr ds:[489C48],0
0047F90D    0F8E 0F040000   jle 学日语练.0047FD22
0047F913    66:8B5C24 10    mov bx,word ptr ss:[esp+10]
0047F918    33ED            xor ebp,ebp
0047F91A    8D7C24 50       lea edi,dword ptr ss:[esp+50]
0047F91E    B9 FFFFFFFF     mov ecx,-1
0047F923    2BC0            sub eax,eax
0047F925    F2:AE           repne scas byte ptr es:[edi]
0047F927    F7D1            not ecx
0047F929    2BF9            sub edi,ecx
0047F92B    8BC1            mov eax,ecx
0047F92D    C1E9 02         shr ecx,2
0047F930    8BF7            mov esi,edi
0047F932    8D7C24 1C       lea edi,dword ptr ss:[esp+1C]
0047F936    F3:A5           rep movs dword ptr es:[edi],dword ptr>
0047F938    8BC8            mov ecx,eax
0047F93A    83E1 03         and ecx,3
0047F93D    F3:A4           rep movs byte ptr es:[edi],byte ptr d>
0047F93F    0FBF4C24 12     movsx ecx,word ptr ss:[esp+12]
0047F944    8B35 4C9C4800   mov esi,dword ptr ds:[489C4C]
0047F94A    894C24 18       mov dword ptr ss:[esp+18],ecx
0047F94E    C1E1 02         shl ecx,2
0047F951    8D0449          lea eax,dword ptr ds:[ecx+ecx*2]
0047F954    8D1480          lea edx,dword ptr ds:[eax+eax*4]
0047F957    03F2            add esi,edx
0047F959    66:8B06         mov ax,word ptr ds:[esi]
0047F95C    66:A3 389C4800  mov word ptr ds:[489C38],ax
0047F962    8B4E 08         mov ecx,dword ptr ds:[esi+8]
0047F965    890D 349C4800   mov dword ptr ds:[489C34],ecx
0047F96B    8B7E 0C         mov edi,dword ptr ds:[esi+C]
0047F96E    893D 449C4800   mov dword ptr ds:[489C44],edi
0047F974    8B46 10         mov eax,dword ptr ds:[esi+10]
0047F977    A3 CC9B4800     mov dword ptr ds:[489BCC],eax
0047F97C    66:833D 389C480>cmp word ptr ds:[489C38],1
0047F984    66:8B4E 14      mov cx,word ptr ds:[esi+14]
0047F988    66:890D 3E9C480>mov word ptr ds:[489C3E],cx
0047F98F    74 0E           je short 学日语练.0047F99F
0047F991    66:833D 389C480>cmp word ptr ds:[489C38],2
0047F999    0F85 A4000000   jnz 学日语练.0047FA43
0047F99F    BF FC604800     mov edi,学日语练.004860FC                 ; ASCII "string_1"
0047F9A4    B9 09000000     mov ecx,9
0047F9A9    8B76 20         mov esi,dword ptr ds:[esi+20]             ;ASCII "yufeifish"
0047F9AC    F3:A6           repe cmps byte ptr es:[edi],byte ptr >
0047F9AE    75 0C           jnz short 学日语练.0047F9BC
0047F9B0    A1 E0994800     mov eax,dword ptr ds:[4899E0]
0047F9B5    A3 C09B4800     mov dword ptr ds:[489BC0],eax
0047F9BA    EB 32           jmp short 学日语练.0047F9EE
0047F9BC    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047F9C1    BF F0604800     mov edi,学日语练.004860F0                 ; ASCII "string_2"
0047F9C6    B9 09000000     mov ecx,9
0047F9CB    8B7402 20       mov esi,dword ptr ds:[edx+eax+20]         ; ;ASCII "yufeifish"
0047F9CF    F3:A6           repe cmps byte ptr es:[edi],byte ptr >
0047F9D1    75 0C           jnz short 学日语练.0047F9DF
0047F9D3    A1 E4994800     mov eax,dword ptr ds:[4899E4]
0047F9D8    A3 C09B4800     mov dword ptr ds:[489BC0],eax
0047F9DD    EB 0F           jmp short 学日语练.0047F9EE
0047F9DF    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047F9E4    8B4C02 20       mov ecx,dword ptr ds:[edx+eax+20]
0047F9E8    890D C09B4800   mov dword ptr ds:[489BC0],ecx
0047F9EE    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047F9F3    BF FC604800     mov edi,学日语练.004860FC                 ; ASCII "string_1"
0047F9F8    B9 09000000     mov ecx,9                                ASCII "thor-mars"  ;ASCII "ufeifish"
0047F9FD    8B7402 24       mov esi,dword ptr ds:[edx+eax+24]
0047FA01    F3:A6           repe cmps byte ptr es:[edi],byte ptr >
0047FA03    75 0C           jnz short 学日语练.0047FA11
0047FA05    A1 E0994800     mov eax,dword ptr ds:[4899E0]
0047FA0A    A3 C49B4800     mov dword ptr ds:[489BC4],eax
0047FA0F    EB 32           jmp short 学日语练.0047FA43
0047FA11    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047FA16    BF F0604800     mov edi,学日语练.004860F0                 ; ASCII "string_2"
0047FA1B    B9 09000000     mov ecx,9
0047FA20    8B7402 24       mov esi,dword ptr ds:[edx+eax+24]
0047FA24    F3:A6           repe cmps byte ptr es:[edi],byte ptr >
0047FA26    75 0C           jnz short 学日语练.0047FA34
0047FA28    A1 E4994800     mov eax,dword ptr ds:[4899E4]
0047FA2D    A3 C49B4800     mov dword ptr ds:[489BC4],eax
0047FA32    EB 0F           jmp short 学日语练.0047FA43
0047FA34    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047FA39    8B4C02 24       mov ecx,dword ptr ds:[edx+eax+24]
0047FA3D    890D C49B4800   mov dword ptr ds:[489BC4],ecx
0047FA43    A1 4C9C4800     mov eax,dword ptr ds:[489C4C]
0047FA48    66:837C02 04 00 cmp word ptr ds:[edx+eax+4],0
0047FA4E    75 55           jnz short 学日语练.0047FAA5
0047FA50    8D4C24 1C       lea ecx,dword ptr ss:[esp+1C]
0047FA54    E8 A7F9FFFF     call 学日语练.0047F400
0047FA59    33C0            xor eax,eax
0047FA5B    66:A1 389C4800  mov ax,word ptr ds:[489C38]
0047FA61    85C0            test eax,eax
0047FA63    74 0C           je short 学日语练.0047FA71
0047FA65    83F8 01         cmp eax,1
0047FA68    7C 3B           jl short 学日语练.0047FAA5
0047FA6A    83F8 02         cmp eax,2
0047FA6D    7E 0A           jle short 学日语练.0047FA79
0047FA6F   /EB 34           jmp short 学日语练.0047FAA5
0047FA71   |8B0D 349C4800   mov ecx,dword ptr ds:[489C34]
0047FA77   |EB 27           jmp short 学日语练.0047FAA0
0047FA79   |8B0D 449C4800   mov ecx,dword ptr ds:[489C44]
0047FA7F   |E8 7CF9FFFF     call 学日语练.0047F400
0047FA84   |8B0D CC9B4800   mov ecx,dword ptr ds:[489BCC]
0047FA8A   |E8 71F9FFFF     call 学日语练.0047F400
0047FA8F   |8B0D C09B4800   mov ecx,dword ptr ds:[489BC0]
0047FA95   |E8 66F9FFFF     call 学日语练.0047F400
0047FA9A   |8B0D C49B4800   mov ecx,dword ptr ds:[489BC4]
0047FAA0   |E8 5BF9FFFF     call 学日语练.0047F400
0047FAA5   \33C0            xor eax,eax
0047FAA7    66:A1 389C4800  mov ax,word ptr ds:[489C38]
0047FAAD    85C0            test eax,eax
0047FAAF    74 17           je short 学日语练.0047FAC8
0047FAB1    83F8 01         cmp eax,1
0047FAB4    0F8C 4B020000   jl 学日语练.0047FD05
0047FABA    83F8 02         cmp eax,2
0047FABD    0F8E 92000000   jle 学日语练.0047FB55
0047FAC3    E9 3D020000     jmp 学日语练.0047FD05
0047FAC8    A1 349C4800     mov eax,dword ptr ds:[489C34]
0047FACD    8038 00         cmp byte ptr ds:[eax],0
0047FAD0    75 19           jnz short 学日语练.0047FAEB
0047FAD2    8B4424 18       mov eax,dword ptr ss:[esp+18]
0047FAD6    8A80 A3994800   mov al,byte ptr ds:[eax+4899A3]
0047FADC    3C 01           cmp al,1
0047FADE    74 04           je short 学日语练.0047FAE4
0047FAE0    3C 02           cmp al,2
0047FAE2    75 07           jnz short 学日语练.0047FAEB
0047FAE4    33ED            xor ebp,ebp
0047FAE6    E9 1A020000     jmp 学日语练.0047FD05
0047FAEB    8B3D 349C4800   mov edi,dword ptr ds:[489C34]
0047FAF1    B9 FFFFFFFF     mov ecx,-1
0047FAF6    2BC0            sub eax,eax
0047FAF8    F2:AE           repne scas byte ptr es:[edi]
0047FAFA    0FBF4424 10     movsx eax,word ptr ss:[esp+10]
0047FAFF    F7D1            not ecx
0047FB01    49              dec ecx
0047FB02    3BC8            cmp ecx,eax
0047FB04    7C 15           jl short 学日语练.0047FB1B
0047FB06    8B3D 349C4800   mov edi,dword ptr ds:[489C34]
0047FB0C    B9 FFFFFFFF     mov ecx,-1
0047FB11    2BC0            sub eax,eax
0047FB13    F2:AE           repne scas byte ptr es:[edi]
0047FB15    F7D1            not ecx
0047FB17    49              dec ecx
0047FB18    66:8BD9         mov bx,cx
0047FB1B    66:33C9         xor cx,cx
0047FB1E    66:85DB         test bx,bx
0047FB21    7E 1E           jle short 学日语练.0047FB41
0047FB23    8B15 349C4800   mov edx,dword ptr ds:[489C34]
0047FB29    0FBFC1          movsx eax,cx
0047FB2C    8A1402          mov dl,byte ptr ds:[edx+eax]
0047FB2F    80FA 3F         cmp dl,3F
0047FB32    74 06           je short 学日语练.0047FB3A
0047FB34    385404 1C       cmp byte ptr ss:[esp+eax+1C],dl
0047FB38    75 07           jnz short 学日语练.0047FB41
0047FB3A    66:41           inc cx
0047FB3C    66:3BCB         cmp cx,bx
0047FB3F  ^ 7C E2           jl short 学日语练.0047FB23
0047FB41    66:2BCB         sub cx,bx
0047FB44    BD 00000000     mov ebp,0
0047FB49    66:83F9 01      cmp cx,1
0047FB4D    83D5 FF         adc ebp,-1
0047FB50    E9 B0010000     jmp 学日语练.0047FD05
0047FB55    8B3D 449C4800   mov edi,dword ptr ds:[489C44]   ;EDI=Xyufeifish.          这就是String 1
0047FB5B    B9 FFFFFFFF     mov ecx,-1
0047FB60    2BC0            sub eax,eax
0047FB62    F2:AE           repne scas byte ptr es:[edi]
0047FB64    F7D1            not ecx
0047FB66    49              dec ecx                         ;取长度  ECX=9
0047FB67    66:49           dec cx
0047FB69    66:83F9 FF      cmp cx,0FFFF
0047FB6D    74 26           je short 学日语练.0047FB95
0047FB6F    66:85C9         test cx,cx
0047FB72    7C 1B           jl short 学日语练.0047FB8F
0047FB74    8B15 449C4800   mov edx,dword ptr ds:[489C44]
0047FB7A    0FBFC1          movsx eax,cx
0047FB7D    8A1402          mov dl,byte ptr ds:[edx+eax]   ;依次倒序取
0047FB80    80FA 3F         cmp dl,3F                     ;逐位比较试炼码前9位
0047FB83    74 06           je short 学日语练.0047FB8B    ;跳则OVER!
0047FB85    385404 1C       cmp byte ptr ss:[esp+eax+1C],dl
0047FB89    75 04           jnz short 学日语练.0047FB8F
0047FB8B    66:49           dec cx
0047FB8D  ^ 79 E5           jns short 学日语练.0047FB74
0047FB8F    66:83F9 FF      cmp cx,0FFFF
0047FB93    75 05           jnz short 学日语练.0047FB9A
0047FB95    BD 01000000     mov ebp,1
0047FB9A    8B3D CC9B4800   mov edi,dword ptr ds:[489BCC]
0047FBA0    B9 FFFFFFFF     mov ecx,-1
0047FBA5    2BC0            sub eax,eax
0047FBA7    F2:AE           repne scas byte ptr es:[edi]
0047FBA9    F7D1            not ecx
0047FBAB    49              dec ecx
0047FBAC    8D7C24 1C       lea edi,dword ptr ss:[esp+1C]
0047FBB0    66:8BD1         mov dx,cx
0047FBB3    2BC0            sub eax,eax
0047FBB5    B9 FFFFFFFF     mov ecx,-1
0047FBBA    F2:AE           repne scas byte ptr es:[edi]
0047FBBC    F7D1            not ecx
0047FBBE    49              dec ecx
0047FBBF    66:2BCA         sub cx,dx
0047FBC2    66:85C9         test cx,cx
0047FBC5    7E 2F           jle short 学日语练.0047FBF6
0047FBC7    66:33F6         xor si,si
0047FBCA    66:85D2         test dx,dx
0047FBCD    7E 21           jle short 学日语练.0047FBF0
0047FBCF    A1 CC9B4800     mov eax,dword ptr ds:[489BCC]
0047FBD4    0FBFFE          movsx edi,si
0047FBD7    8A0438          mov al,byte ptr ds:[eax+edi] ;依次倒序取
0047FBDA    3C 3F           cmp al,3F                  
0047FBDC    74 0B           je short 学日语练.0047FBE9
0047FBDE    0FBFD9          movsx ebx,cx
0047FBE1    03DF            add ebx,edi
0047FBE3    38441C 1C       cmp byte ptr ss:[esp+ebx+1C],al  ;逐位比较试炼码最后8位
0047FBE7    75 07           jnz short 学日语练.0047FBF0       ;跳则OVER!
0047FBE9    66:46           inc si
0047FBEB    66:3BD6         cmp dx,si
0047FBEE  ^ 7F DF           jg short 学日语练.0047FBCF         ;循环比较!
0047FBF0    66:3BD6         cmp dx,si
0047FBF3    75 01           jnz short 学日语练.0047FBF6
0047FBF5    45              inc ebp                            ;EBP=1 + 1=2
0047FBF6    83FD 02         cmp ebp,2                          ;是否已比较2次?
0047FBF9    74 0A           je short 学日语练.0047FC05
0047FBFB    BD FEFFFFFF     mov ebp,-2
0047FC00    E9 00010000     jmp 学日语练.0047FD05
0047FC05    8B3D 449C4800   mov edi,dword ptr ds:[489C44]     ;EDI=*****           这就是String 2
0047FC0B    B9 FFFFFFFF     mov ecx,-1
0047FC10    2BC0            sub eax,eax
0047FC12    F2:AE           repne scas byte ptr es:[edi]
0047FC14    F7D1            not ecx
0047FC16    2BC0            sub eax,eax
0047FC18    8D740C 1B       lea esi,dword ptr ss:[esp+ecx+1B]
0047FC1C    8BFE            mov edi,esi
0047FC1E    B9 FFFFFFFF     mov ecx,-1
0047FC23    F2:AE           repne scas byte ptr es:[edi]
0047FC25    F7D1            not ecx
0047FC27    8B3D CC9B4800   mov edi,dword ptr ds:[489BCC]
0047FC2D    2BC0            sub eax,eax
0047FC2F    8D51 FF         lea edx,dword ptr ds:[ecx-1]
0047FC32    B9 FFFFFFFF     mov ecx,-1
0047FC37    F2:AE           repne scas byte ptr es:[edi]
0047FC39    F7D1            not ecx
0047FC3B    49              dec ecx
0047FC3C    8BC6            mov eax,esi
0047FC3E    2BC1            sub eax,ecx
0047FC40    8BCE            mov ecx,esi
0047FC42    C60410 00       mov byte ptr ds:[eax+edx],0
0047FC46    E8 C54D0000     call 学日语练.00484A10                      ;测试试炼码中间的12345678是否是数字?
0047FC4B    85C0            test eax,eax
0047FC4D    75 0A           jnz short 学日语练.0047FC59
0047FC4F    BD FDFFFFFF     mov ebp,-3
0047FC54    E9 AC000000     jmp 学日语练.0047FD05
0047FC59    BA E8604800     mov edx,学日语练.004860E8                 ; ASCII "0604"
0047FC5E    8BCE            mov ecx,esi
0047FC60    BD FCFFFFFF     mov ebp,-4
0047FC65    E8 F64D0000     call 学日语练.00484A60                    ;取12345678的16进制值
0047FC6A    66:833D 389C480>cmp word ptr ds:[489C38],1
0047FC72    8BF0            mov esi,eax
0047FC74    75 59           jnz short 学日语练.0047FCCF
0047FC76    66:8B3D 3E9C480>mov di,word ptr ds:[489C3E]
0047FC7D    8B15 C09B4800   mov edx,dword ptr ds:[489BC0]
0047FC83    66:C1EF 08      shr di,8
0047FC87    66:8B0D 3E9C480>mov cx,word ptr ds:[489C3E]
0047FC8E    66:81E1 FF00    and cx,0FF
0047FC93    E8 F8FAFFFF     call 学日语练.0047F790
0047FC98    03F0            add esi,eax
0047FC9A    66:85FF         test di,di
0047FC9D    75 0A           jnz short 学日语练.0047FCA9
0047FC9F    8B15 C49B4800   mov edx,dword ptr ds:[489BC4]
0047FCA5    8BCF            mov ecx,edi
0047FCA7    EB 0B           jmp short 学日语练.0047FCB4
0047FCA9    66:8BCF         mov cx,di
0047FCAC    8B15 C49B4800   mov edx,dword ptr ds:[489BC4]
0047FCB2    66:41           inc cx
0047FCB4    E8 D7FAFFFF     call 学日语练.0047F790
0047FCB9    8BC8            mov ecx,eax
0047FCBB    85C9            test ecx,ecx
0047FCBD    75 07           jnz short 学日语练.0047FCC6
0047FCBF    BD FBFFFFFF     mov ebp,-5
0047FCC4    EB 36           jmp short 学日语练.0047FCFC
0047FCC6    8BC6            mov eax,esi
0047FCC8    99              cdq
0047FCC9    F7F9            idiv ecx
0047FCCB    8BEA            mov ebp,edx
0047FCCD    EB 2D           jmp short 学日语练.0047FCFC
0047FCCF    66:833D 389C480>cmp word ptr ds:[489C38],2
0047FCD7    75 23           jnz short 学日语练.0047FCFC
0047FCD9    66:8B15 3E9C480>mov dx,word ptr ds:[489C3E]       ;DX=*****           这个似乎是固定值
0047FCE0    A1 C49B4800     mov eax,dword ptr ds:[489BC4]      ;EAX=Freedom Cracker 单位名
0047FCE5    50              push eax
0047FCE6    8B0D C09B4800   mov ecx,dword ptr ds:[489BC0]     ;ECX=pendan2001      用户名
0047FCEC    51              push ecx
0047FCED    8B0D D4994800   mov ecx,dword ptr ds:[4899D4]    ;ECX=0001515A(H)=86362(D)  序列号   
0047FCF3    E8 28FBFFFF     call 学日语练.0047F820;关键CALL!进入!对用户名、单位和序列号进行运算
0047FCF8    8BE8            mov ebp,eax            ;运算结果16进制显示
0047FCFA    2BEE            sub ebp,esi            ;16进制值-12345678的16进制值是否等于注册码中间几位
0047FCFC    85ED            test ebp,ebp
0047FCFE    74 29           je short 学日语练.0047FD29
0047FD00    BD FBFFFFFF     mov ebp,-5
0047FD05    85ED            test ebp,ebp
0047FD07    7D 20           jge short 学日语练.0047FD29
0047FD09    66:FF4424 12    inc word ptr ss:[esp+12]
0047FD0E    66:8B4424 12    mov ax,word ptr ss:[esp+12]
0047FD13    66:3905 489C480>cmp word ptr ds:[489C48],ax
0047FD1A  ^ 0F8F F3FBFFFF   jg 学日语练.0047F913
0047FD20    EB 07           jmp short 学日语练.0047FD29
0047FD22    8BAC24 84000000 mov ebp,dword ptr ss:[esp+84]
0047FD29    33F6            xor esi,esi
0047FD2B    85ED            test ebp,ebp
0047FD2D    0F8C D5000000   jl 学日语练.0047FE08
0047FD33    66:8B4424 12    mov ax,word ptr ss:[esp+12]
0047FD38    66:3905 489C480>cmp word ptr ds:[489C48],ax
0047FD3F    0F8E C3000000   jle 学日语练.0047FE08
0047FD45    BA 01000000     mov edx,1
0047FD4A    8B4C24 12       mov ecx,dword ptr ss:[esp+12]
0047FD4E    E8 6DF7FFFF     call 学日语练.0047F4C0
0047FD53    85C0            test eax,eax
0047FD55    74 76           je short 学日语练.0047FDCD
0047FD57    68 10100000     push 1010
0047FD5C    8B1D 4C9C4800   mov ebx,dword ptr ds:[489C4C]
0047FD62    0FBF4424 16     movsx eax,word ptr ss:[esp+16]
0047FD67    C1E0 02         shl eax,2
0047FD6A    68 E0604800     push 学日语练.004860E0                    ; ASCII "Warning"
0047FD6F    8D0C40          lea ecx,dword ptr ds:[eax+eax*2]
0047FD72    8D1489          lea edx,dword ptr ds:[ecx+ecx*4]
0047FD75    8B4C24 1C       mov ecx,dword ptr ss:[esp+1C]
0047FD79    8B441A 34       mov eax,dword ptr ds:[edx+ebx+34]
0047FD7D    50              push eax
0047FD7E    51              push ecx
0047FD7F    FF15 24A54800   call dword ptr ds:[<&USER32.MessageBo>; user32.MessageBoxA
0047FD85    8B4C24 14       mov ecx,dword ptr ss:[esp+14]
0047FD89    68 01100000     push 1001
0047FD8E    51              push ecx
0047FD8F    FF15 14A54800   call dword ptr ds:[<&USER32.GetDlgIte>; user32.GetDlgItem
//看到这个函数,明白下bpx getdlgitemtexta   对于Softsentry 壳下这个断点是很好用的。

堆栈:
0012FB1C   01EB0340  |hOwner = 01EB0340 ('学日语背单词',class='#32770')
0012FB20   0013A2D5  |Text = "密码错误!"
0012FB24   004860E0  |Title = "Warning"

偶仔细跟了一下,发现算法和fly的英宇职业介绍管理系统 V5.0 破文里面的算法很想似,也就是

1、注册码前9位固定

2、注册码最后8位固定

3、注册码中间几位是通过对用户名、单位名、序列号运算得出的。

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习.....

有很多地方都看不明白.......
2005-10-24 18:41
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
程序运行后,点"我要试用",接着会出现一个异常:

Exception C0000008 (INVALID HANDLE)的异常,
之后按Alt+M打开内存映像,在
4001000处下断点(CODE区域)
之后程序断在这里:
00481365    8B41 06         mov eax,dword ptr ds:[ecx+6]
00481368    42              inc edx
00481369    314497 FC       xor dword ptr ds:[edi+edx*4-4],eax       ; 学日语练.00400000  //程序断在这里
0048136D    42              inc edx
0048136E    8B41 0A         mov eax,dword ptr ds:[ecx+A]
00481371    314497 FC       xor dword ptr ds:[edi+edx*4-4],eax
00481375    83FA 14         cmp edx,14
00481378  ^ 7C EB           jl short 学日语练.00481365
0048137A    8B0E            mov ecx,dword ptr ds:[esi]               ; 在这里按F4

之后再在4001000处下断点
程序就中断在OEP处了
0046006C    55              push ebp                                 ; Oep
0046006D    8BEC            mov ebp,esp
0046006F    83C4 F0         add esp,-10
00460072    B8 A4FE4500     mov eax,学日语练.0045FEA4
00460077    E8 1C65FAFF     call 学日语练.00406598
0046007C    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
00460081    8B00            mov eax,dword ptr ds:[eax]
00460083    E8 5045FFFF     call 学日语练.004545D8
00460088    8B0D C8204600   mov ecx,dword ptr ds:[4620C8]            ; 学日语练.00463C84
0046008E    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
00460093    8B00            mov eax,dword ptr ds:[eax]
00460095    8B15 ECC64500   mov edx,dword ptr ds:[45C6EC]            ; 学日语练.0045C738
0046009B    E8 5045FFFF     call 学日语练.004545F0
004600A0    A1 D41F4600     mov eax,dword ptr ds:[461FD4]
004600A5    8B00            mov eax,dword ptr ds:[eax]
004600A7    E8 C445FFFF     call 学日语练.00454670
004600AC    E8 8B40FAFF     call 学日语练.0040413C

之后把程序DUMP出来,修复一下IAT就可以运行了 :D

之后连注册也不用了 -_-///
可能是用了壳的提供的注册功能吧
2005-10-24 20:08
0
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
4
看到这个函数,明白下bpx getdlgitemtexta   对于Softsentry 壳下这个断点是很好用的
又学到了不少东东
2005-10-24 20:53
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
程序运行后,点"我要试用",接着会出现一个异常:

Exception C0000008 (INVALID HANDLE)的异常,

这个异常简单的手动NOP掉就可以了。
2005-10-25 08:46
0
雪    币: 86
活跃值: (1258)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个是老壳了。。。
脱壳比较简单。。。
加密保护的壳,脱完就不用注册了滴。。
2005-10-25 12:59
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
7
晕...这个壳还是加密壳呢....
那个异常正好用来下内存断点,
比较有用的
2005-10-25 13:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好长啊~~~~~学习中
2005-10-26 19:34
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
如果只是想要破解的话,那么只要将00480FEB    0F84 18000000   je 学日语练.00481009  这句NOP掉就是无限制版的了!无须脱壳和追注册码的。
2005-10-27 00:32
0
游客
登录 | 注册 方可回帖
返回
//