声明对于CRACK 我是菜鸟 希望大家能说的详细些 谢谢
因为无任何明文提示
网上搜索相关资料
从函数下手
函数也没看太明白 只是看了http://bbs.pediy.com/showthread.php?p=164170
函数如下:(个人想法:因为要输入机器名和注册码,所以只找了带有String的函数)
00407008 .rdata 导入 ( KERNEL32.CloseHandle
00407010 .rdata 导入 ( KERNEL32.CreateDirectoryA
00407020 .rdata 导入 ( KERNEL32.CreateFileA
0040704C .rdata 导入 ( KERNEL32.ExitProcess
00407078 .rdata 导入 ( KERNEL32.FreeEnvironmentStringsA
0040707C .rdata 导入 ( KERNEL32.FreeEnvironmentStringsW
004070A0 .rdata 导入 ( KERNEL32.GetACP
00407044 .rdata 导入 ( KERNEL32.GetCommandLineA
0040709C .rdata 导入 ( KERNEL32.GetCPInfo
00407070 .rdata 导入 ( KERNEL32.GetCurrentProcess
00407084 .rdata 导入 ( KERNEL32.GetEnvironmentStrings
// 这里看到有个环境字符串 S和下面的W感觉比较象 设置断点后
00407088 .rdata 导入 ( KERNEL32.GetEnvironmentStringsW
00407050 .rdata 导入 ( KERNEL32.GetEnvironmentVariableA
00407094 .rdata 导入 ( KERNEL32.GetFileType
00407024 .rdata 导入 ( KERNEL32.GetModuleFileNameA
0040703C .rdata 导入 ( KERNEL32.GetModuleHandleA
004070A4 .rdata 导入 ( KERNEL32.GetOEMCP
00407000 .rdata 导入 ( KERNEL32.GetProcAddress
00407040 .rdata 导入 ( KERNEL32.GetStartupInfoA
00407090 .rdata 导入 ( KERNEL32.GetStdHandle
00407028 .rdata 导入 ( KERNEL32.GetStringTypeA
//对于这里文本字符串A和W也跟过,在断后运行 程序都没跑出来 ,所以感觉不是 因为程序出来并不直接提示注册 要自己点击注册 ,所以放弃这两个 String
004070AC .rdata 导入 ( KERNEL32.GetStringTypeW
00407014 .rdata 导入 ( KERNEL32.GetTempPathA
00407048 .rdata 导入 KERNEL32.GetVersion
00407054 .rdata 导入 ( KERNEL32.GetVersionExA
00407034 .rdata 导入 ( KERNEL32.HeapAlloc
0040705C .rdata 导入 ( KERNEL32.HeapCreate
00407058 .rdata 导入 ( KERNEL32.HeapDestroy
00407038 .rdata 导入 ( KERNEL32.HeapFree
00407068 .rdata 导入 ( KERNEL32.HeapReAlloc
00407030 .rdata 导入 ( KERNEL32.LCMapStringA
0040702C .rdata 导入 ( KERNEL32.LCMapStringW
00407004 .rdata 导入 ( KERNEL32.LoadLibraryA
004070B4 .rdata 导入 ( USER32.MessageBoxA
0040389F .text 导出 <ModuleEntryPoint>
004070A8 .rdata 导入 ( KERNEL32.MultiByteToWideChar
00407018 .rdata 导入 ( KERNEL32.ReadFile
00407098 .rdata 导入 ( KERNEL32.RtlUnwind
0040701C .rdata 导入 ( KERNEL32.SetFilePointer
0040708C .rdata 导入 ( KERNEL32.SetHandleCount
0040706C .rdata 导入 ( KERNEL32.TerminateProcess
00407074 .rdata 导入 ( KERNEL32.UnhandledExceptionFilter
00407064 .rdata 导入 ( KERNEL32.VirtualAlloc
00407060 .rdata 导入 ( KERNEL32.VirtualFree
00407080 .rdata 导入 ( KERNEL32.WideCharToMultiByte
0040700C .rdata 导入 ( KERNEL32.WriteFile
004070B8 .rdata 导入 ( USER32.wsprintfA
只有两处 排除一出后 只剩下
00407084 .rdata 导入 ( KERNEL32.GetEnvironmentStrings (2个断点)
00407088 .rdata 导入 ( KERNEL32.GetEnvironmentStringsW (1个断点)
0040512E /$ 51 push ecx
0040512F |. 51 push ecx
00405130 |. A1 D0BB4000 mov eax,dword ptr ds:[40BBD0]
00405135 |. 53 push ebx
00405136 |. 55 push ebp
00405137 |. 8B2D 88704000 mov ebp,dword ptr ds:[<&KERNEL32.G>; kernel32.GetEnvironmentStringsW
0040513D |. 56 push esi
0040513E |. 57 push edi
0040513F |. 33DB xor ebx,ebx
00405141 |. 33F6 xor esi,esi
00405143 |. 33FF xor edi,edi
00405145 |. 3BC3 cmp eax,ebx
00405147 |. 75 33 jnz short 新春无奈.0040517C
00405149 |. FFD5 call ebp ; [GetEnvironmentStringsW(第一处)
0040514B |. 8BF0 mov esi,eax
0040514D |. 3BF3 cmp esi,ebx
0040514F |. 74 0C je short 新春无奈.0040515D
00405151 |. C705 D0BB4000>mov dword ptr ds:[40BBD0],1
0040515B |. EB 28 jmp short 新春无奈.00405185
0040515D |> FF15 84704000 call dword ptr ds:[<&KERNEL32.GetE>; [GetEnvironmentStrings(二)
00405163 |. 8BF8 mov edi,eax
00405165 |. 3BFB cmp edi,ebx
00405167 |. 0F84 EA000000 je 新春无奈.00405257
0040516D |. C705 D0BB4000>mov dword ptr ds:[40BBD0],2
00405177 |. E9 8F000000 jmp 新春无奈.0040520B
0040517C |> 83F8 01 cmp eax,1
0040517F |. 0F85 81000000 jnz 新春无奈.00405206
00405185 |> 3BF3 cmp esi,ebx
00405187 |. 75 0C jnz short 新春无奈.00405195
00405189 |. FFD5 call ebp
0040518B |. 8BF0 mov esi,eax
0040518D |. 3BF3 cmp esi,ebx
0040518F |. 0F84 C2000000 je 新春无奈.00405257
00405195 |> 66:391E cmp word ptr ds:[esi],bx
00405198 |. 8BC6 mov eax,esi
0040519A |. 74 0E je short 新春无奈.004051AA
0040519C |> 40 /inc eax
0040519D |. 40 |inc eax
0040519E |. 66:3918 |cmp word ptr ds:[eax],bx
004051A1 |.^ 75 F9 |jnz short 新春无奈.0040519C
004051A3 |. 40 |inc eax
004051A4 |. 40 |inc eax
004051A5 |. 66:3918 |cmp word ptr ds:[eax],bx
004051A8 |.^ 75 F2 \jnz short 新春无奈.0040519C
004051AA |> 2BC6 sub eax,esi
004051AC |. 8B3D 80704000 mov edi,dword ptr ds:[<&KERNEL32.W>; kernel32.WideCharToMultiByte
004051B2 |. D1F8 sar eax,1
004051B4 |. 53 push ebx ; /pDefaultCharUsed
004051B5 |. 53 push ebx ; |pDefaultChar
004051B6 |. 40 inc eax ; |
004051B7 |. 53 push ebx ; |MultiByteCount
004051B8 |. 53 push ebx ; |MultiByteStr
004051B9 |. 50 push eax ; |WideCharCount
004051BA |. 56 push esi ; |WideCharStr
004051BB |. 53 push ebx ; |Options
004051BC |. 53 push ebx ; |CodePage
004051BD |. 894424 34 mov dword ptr ss:[esp+34],eax ; |
004051C1 |. FFD7 call edi ; \WideCharToMultiByte
004051C3 |. 8BE8 mov ebp,eax
004051C5 |. 3BEB cmp ebp,ebx
004051C7 |. 74 32 je short 新春无奈.004051FB
004051C9 |. 55 push ebp
004051CA |. E8 0FE8FFFF call 新春无奈.004039DE
004051CF |. 3BC3 cmp eax,ebx
004051D1 |. 59 pop ecx
004051D2 |. 894424 10 mov dword ptr ss:[esp+10],eax
004051D6 |. 74 23 je short 新春无奈.004051FB
004051D8 |. 53 push ebx ; /pDefaultCharUsed
004051D9 |. 53 push ebx ; |pDefaultChar
004051DA |. 55 push ebp ; |MultiByteCount
004051DB |. 50 push eax ; |MultiByteStr
004051DC |. FF7424 24 push dword ptr ss:[esp+24] ; |WideCharCount
004051E0 |. 56 push esi ; |WideCharStr
004051E1 |. 53 push ebx ; |Options
004051E2 |. 53 push ebx ; |CodePage
004051E3 |. FFD7 call edi ; \WideCharToMultiByte
004051E5 |. 85C0 test eax,eax
004051E7 |. 75 0E jnz short 新春无奈.004051F7
004051E9 |. FF7424 10 push dword ptr ss:[esp+10]
004051ED |. E8 44E6FFFF call 新春无奈.00403836
004051F2 |. 59 pop ecx
004051F3 |. 895C24 10 mov dword ptr ss:[esp+10],ebx
004051F7 |> 8B5C24 10 mov ebx,dword ptr ss:[esp+10]
004051FB |> 56 push esi ; /EnvironmentBlock
004051FC |. FF15 7C704000 call dword ptr ds:[<&KERNEL32.Free>; \FreeEnvironmentStringsW
00405202 |. 8BC3 mov eax,ebx
00405204 |. EB 53 jmp short 新春无奈.00405259
00405206 |> 83F8 02 cmp eax,2
00405209 |. 75 4C jnz short 新春无奈.00405257
0040520B |> 3BFB cmp edi,ebx
0040520D |. 75 0C jnz short 新春无奈.0040521B
0040520F |. FF15 84704000 call dword ptr ds:[<&KERNEL32.GetE>; [GetEnvironmentStrings(三)
00405215 |. 8BF8 mov edi,eax
00405217 |. 3BFB cmp edi,ebx
00405219 |. 74 3C je short 新春无奈.00405257
0040521B |> 381F cmp byte ptr ds:[edi],bl
0040521D |. 8BC7 mov eax,edi
0040521F |. 74 0A je short 新春无奈.0040522B
00405221 |> 40 /inc eax
00405222 |. 3818 |cmp byte ptr ds:[eax],bl
00405224 |.^ 75 FB |jnz short 新春无奈.00405221
00405226 |. 40 |inc eax
00405227 |. 3818 |cmp byte ptr ds:[eax],bl
00405229 |.^ 75 F6 \jnz short 新春无奈.00405221
0040522B |> 2BC7 sub eax,edi
0040522D |. 40 inc eax
0040522E |. 8BE8 mov ebp,eax
00405230 |. 55 push ebp
00405231 |. E8 A8E7FFFF call 新春无奈.004039DE
在以上三处下断后 运行 程序出来了 但是点注册 输入完机器名和注册码后
程序没有停下来啊
如果我要在栈中看到 注册码或是进算法 我应该在哪里下断呢??
谢谢
[培训]科锐逆向工程师培训第53期2025年7月8日开班!