这是我真正开始破解软件,我破解的是一个电子书,用DELPHI写的.
当点目录时会弹出输入密码框,输入密码后出现密码错误的提示
然后找字符串找到相应的地方下断点,找到一个SWITCH的过程如下:
004C7EC0 /. 55 push ebp
004C7EC1 |. 8BEC mov ebp, esp
004C7EC3 |. 6A 00 push 0
004C7EC5 |. 6A 00 push 0
004C7EC7 |. 53 push ebx
004C7EC8 |. 8BD8 mov ebx, eax
004C7ECA |. 33C0 xor eax, eax
004C7ECC |. 55 push ebp
004C7ECD |. 68 3B824C00 push 004C823B
004C7ED2 |. 64:FF30 push dword ptr fs:[eax]
004C7ED5 |. 64:8920 mov dword ptr fs:[eax], esp
004C7ED8 |. 33D2 xor edx, edx
004C7EDA |. 8B83 70070000 mov eax, dword ptr [ebx+770] ; (initial cpu selection)
004C7EE0 |. E8 F7B3F8FF call 004532DC
004C7EE5 |. 33C0 xor eax, eax
004C7EE7 |. 8A83 40A90000 mov al, byte ptr [ebx+A940]
004C7EED |. 83F8 19 cmp eax, 19 ; Switch (cases 1..19)
004C7EF0 |. 0F87 BC020000 ja 004C81B2
004C7EF6 |. FF2485 FD7E4C>jmp dword ptr [eax*4+4C7EFD]
004C7EFD |. B2814C00 dd dnwx4_0.004C81B2 ; 分支表 被用于 004C7EF6
004C7F01 |. 657F4C00 dd dnwx4_0.004C7F65
004C7F05 |. 807F4C00 dd dnwx4_0.004C7F80
004C7F09 |. 957F4C00 dd dnwx4_0.004C7F95
004C7F0D |. AA7F4C00 dd dnwx4_0.004C7FAA
004C7F11 |. BF7F4C00 dd dnwx4_0.004C7FBF
004C7F15 |. D47F4C00 dd dnwx4_0.004C7FD4
004C7F19 |. E97F4C00 dd dnwx4_0.004C7FE9
004C7F1D |. 28804C00 dd dnwx4_0.004C8028
004C7F21 |. 62804C00 dd dnwx4_0.004C8062
004C7F25 |. 77804C00 dd dnwx4_0.004C8077
004C7F29 |. 8C804C00 dd dnwx4_0.004C808C
004C7F2D |. A1804C00 dd dnwx4_0.004C80A1
004C7F31 |. B6804C00 dd dnwx4_0.004C80B6
004C7F35 |. CB804C00 dd dnwx4_0.004C80CB
004C7F39 |. E0804C00 dd dnwx4_0.004C80E0
004C7F3D |. F5804C00 dd dnwx4_0.004C80F5
004C7F41 |. 0A814C00 dd dnwx4_0.004C810A
004C7F45 |. 1F814C00 dd dnwx4_0.004C811F
004C7F49 |. 34814C00 dd dnwx4_0.004C8134
004C7F4D |. 46814C00 dd dnwx4_0.004C8146
004C7F51 |. 58814C00 dd dnwx4_0.004C8158
004C7F55 |. 6A814C00 dd dnwx4_0.004C816A
004C7F59 |. 7C814C00 dd dnwx4_0.004C817C
004C7F5D |. 8E814C00 dd dnwx4_0.004C818E
004C7F61 |. A0814C00 dd dnwx4_0.004C81A0
004C7F65 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 1 of switch 004C7EED
004C7F6B |. 8B8B C4FF0400 mov ecx, dword ptr [ebx+4FFC4]
004C7F71 |. BA 50824C00 mov edx, 004C8250 ; 向作者注册后才能阅读,请填机器码:
004C7F76 |. E8 35BFF3FF call 00403EB0
004C7F7B |. E9 42020000 jmp 004C81C2
004C7F80 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 2 of switch 004C7EED
004C7F86 |. BA 7C824C00 mov edx, 004C827C ; 不要对该图书进行破解!有问题请与作者联系!
004C7F8B |. E8 A8BCF3FF call 00403C38
004C7F90 |. E9 2D020000 jmp 004C81C2
004C7F95 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 3 of switch 004C7EED
004C7F9B |. BA B0824C00 mov edx, 004C82B0 ; 输入密码错误!!!
004C7FA0 |. E8 93BCF3FF call 00403C38
004C7FA5 |. E9 18020000 jmp 004C81C2
004C7FAA |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 4 of switch 004C7EED
004C7FB0 |. BA C8824C00 mov edx, 004C82C8 ; 现在可以修改文书了!
004C7FB5 |. E8 7EBCF3FF call 00403C38
004C7FBA |. E9 03020000 jmp 004C81C2
004C7FBF |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 5 of switch 004C7EED
004C7FC5 |. BA E4824C00 mov edx, 004C82E4 ; 现在可阅读全部目录了!
004C7FCA |. E8 69BCF3FF call 00403C38
004C7FCF |. E9 EE010000 jmp 004C81C2
004C7FD4 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 6 of switch 004C7EED
004C7FDA |. BA 04834C00 mov edx, 004C8304 ; 该版本软件已过期,只能进行阅读!\n请进行注册或下载更新版!\n您的注册将是作者不断完善和改进该软件的动力!
004C7FDF |. E8 54BCF3FF call 00403C38
004C7FE4 |. E9 D9010000 jmp 004C81C2
004C7FE9 |> 68 70834C00 push 004C8370 ; 已达到未注册版最大目录数 ; Case 7 of switch 004C7EED
004C7FEE |. 8D55 FC lea edx, dword ptr [ebp-4]
004C7FF1 |. 8B83 D8FF0400 mov eax, dword ptr [ebx+4FFD8]
004C7FF7 |. E8 3C12F4FF call 00409238
004C7FFC |. FF75 FC push dword ptr [ebp-4]
004C7FFF |. 68 94834C00 push 004C8394 ; \n
004C8004 |. 68 A0834C00 push 004C83A0 ; 另新建一文书使用或进行注册!
004C8009 |. 68 94834C00 push 004C8394 ; \n
004C800E |. 68 C4834C00 push 004C83C4 ; 您的注册将是作者不断完善和改进该软件的动力!
004C8013 |. 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC]
004C8019 |. BA 06000000 mov edx, 6
004C801E |. E8 01BFF3FF call 00403F24
004C8023 |. E9 9A010000 jmp 004C81C2
004C8028 |> 68 F8834C00 push 004C83F8 ; 非注册版不能修改大于; Case 8 of switch 004C7EED
004C802D |. 8D55 F8 lea edx, dword ptr [ebp-8]
004C8030 |. 8B83 D8FF0400 mov eax, dword ptr [ebx+4FFD8]
004C8036 |. E8 FD11F4FF call 00409238
004C803B |. FF75 F8 push dword ptr [ebp-8]
004C803E |. 68 18844C00 push 004C8418
004C8043 |. 68 94834C00 push 004C8394 ; \n
004C8048 |. 68 C4834C00 push 004C83C4 ; 您的注册将是作者不断完善和改进该软件的动力!
004C804D |. 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC]
004C8053 |. BA 05000000 mov edx, 5
004C8058 |. E8 C7BEF3FF call 00403F24
004C805D |. E9 60010000 jmp 004C81C2
004C8062 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 9 of switch 004C7EED
004C8068 |. BA 2C844C00 mov edx, 004C842C ; 基于安全考虑,必须是注册用户才能导入可执行文件!
004C806D |. E8 C6BBF3FF call 00403C38
004C8072 |. E9 4B010000 jmp 004C81C2
004C8077 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case A of switch 004C7EED
004C807D |. BA 64844C00 mov edx, 004C8464 ; 保存后生效!
004C8082 |. E8 B1BBF3FF call 00403C38
004C8087 |. E9 36010000 jmp 004C81C2
004C808C |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case B of switch 004C7EED
004C8092 |. BA 7C844C00 mov edx, 004C847C ; 先打开4.5.6以前版制作的文书再进行转换!
004C8097 |. E8 9CBBF3FF call 00403C38
004C809C |. E9 21010000 jmp 004C81C2
004C80A1 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case C of switch 004C7EED
004C80A7 |. BA AC844C00 mov edx, 004C84AC ; 升级成功!
004C80AC |. E8 87BBF3FF call 00403C38
004C80B1 |. E9 0C010000 jmp 004C81C2
004C80B6 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case D of switch 004C7EED
004C80BC |. BA C0844C00 mov edx, 004C84C0 ; 注册后才可使用该项功能!
004C80C1 |. E8 72BBF3FF call 00403C38
004C80C6 |. E9 F7000000 jmp 004C81C2
004C80CB |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case E of switch 004C7EED
004C80D1 |. BA E0844C00 mov edx, 004C84E0 ; 密码修改成功!
004C80D6 |. E8 5DBBF3FF call 00403C38
004C80DB |. E9 E2000000 jmp 004C81C2
004C80E0 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case F of switch 004C7EED
004C80E6 |. BA F8844C00 mov edx, 004C84F8 ; 输入打开文档密码错误!
004C80EB |. E8 48BBF3FF call 00403C38
004C80F0 |. E9 CD000000 jmp 004C81C2
004C80F5 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 10 of switch 004C7EED
004C80FB |. BA 18854C00 mov edx, 004C8518 ; 文件已被非法改法!
004C8100 |. E8 33BBF3FF call 00403C38
004C8105 |. E9 B8000000 jmp 004C81C2
004C810A |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 11 of switch 004C7EED
004C8110 |. BA 34854C00 mov edx, 004C8534
004C8115 |. E8 1EBBF3FF call 00403C38
004C811A |. E9 A3000000 jmp 004C81C2
004C811F |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 12 of switch 004C7EED
004C8125 |. BA 4C854C00 mov edx, 004C854C ; 升级文件密码与主文件密码不一致!
004C812A |. E8 09BBF3FF call 00403C38
004C812F |. E9 8E000000 jmp 004C81C2
004C8134 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 13 of switch 004C7EED
004C813A |. BA 78854C00 mov edx, 004C8578 ; 主文件的升级密码不能为空!
004C813F |. E8 F4BAF3FF call 00403C38
004C8144 |. EB 7C jmp short 004C81C2
004C8146 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 14 of switch 004C7EED
004C814C |. BA 9C854C00 mov edx, 004C859C ; 升级文件最多不能超过20个!
004C8151 |. E8 E2BAF3FF call 00403C38
004C8156 |. EB 6A jmp short 004C81C2
004C8158 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 15 of switch 004C7EED
004C815E |. BA C0854C00 mov edx, 004C85C0 ; 先选择升级的主文件!
004C8163 |. E8 D0BAF3FF call 00403C38
004C8168 |. EB 58 jmp short 004C81C2
004C816A |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 16 of switch 004C7EED
004C8170 |. BA E0854C00 mov edx, 004C85E0 ; 数据文件已被删除!
004C8175 |. E8 BEBAF3FF call 00403C38
004C817A |. EB 46 jmp short 004C81C2
004C817C |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 17 of switch 004C7EED
004C8182 |. BA FC854C00 mov edx, 004C85FC ; 主文件要是只读或浏览打开模式!
004C8187 |. E8 ACBAF3FF call 00403C38
004C818C |. EB 34 jmp short 004C81C2
004C818E |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 18 of switch 004C7EED
004C8194 |. BA 24864C00 mov edx, 004C8624 ; 密码已存储,在需要的时候调用!
004C8199 |. E8 9ABAF3FF call 00403C38
004C819E |. EB 22 jmp short 004C81C2
004C81A0 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Case 19 of switch 004C7EED
004C81A6 |. BA 4C864C00 mov edx, 004C864C ; 保存数据出错,可能是数据文件被删除!
004C81AB |. E8 88BAF3FF call 00403C38
004C81B0 |. EB 10 jmp short 004C81C2
004C81B2 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC] ; Default case of switch 004C7EED
004C81B8 |. BA 7C864C00 mov edx, 004C867C ; 密码错误
004C81BD |. E8 76BAF3FF call 00403C38
004C81C2 |> C683 40A90000>mov byte ptr [ebx+A940], 0
004C81C9 |. 6A 00 push 0
004C81CB |. 8B83 CCA50000 mov eax, dword ptr [ebx+A5CC]
004C81D1 |. E8 52BEF3FF call 00404028
004C81D6 |. 8BD0 mov edx, eax
004C81D8 |. B9 88864C00 mov ecx, 004C8688 ; 提示
004C81DD |. A1 64F24C00 mov eax, dword ptr [4CF264]
004C81E2 |. 8B00 mov eax, dword ptr [eax]
004C81E4 |. E8 7F82F8FF call 00450468
004C81E9 |. 8B83 CCA50000 mov eax, dword ptr [ebx+A5CC]
004C81EF |. BA B0824C00 mov edx, 004C82B0 ; 输入密码错误!!!
004C81F4 |. E8 7BBDF3FF call 00403F74
004C81F9 |. 75 07 jnz short 004C8202
004C81FB |. 8BC3 mov eax, ebx
004C81FD |. E8 224EF8FF call 0044D024
004C8202 |> 8B83 84060000 mov eax, dword ptr [ebx+684]
004C8208 |. 8078 47 00 cmp byte ptr [eax+47], 0
004C820C |. 75 07 jnz short 004C8215
004C820E |. 8BC3 mov eax, ebx
004C8210 |. E8 0F4EF8FF call 0044D024
004C8215 |> 8D83 CCA50000 lea eax, dword ptr [ebx+A5CC]
004C821B |. E8 C4B9F3FF call 00403BE4
004C8220 |. 33C0 xor eax, eax
004C8222 |. 5A pop edx
004C8223 |. 59 pop ecx
004C8224 |. 59 pop ecx
004C8225 |. 64:8910 mov dword ptr fs:[eax], edx
004C8228 |. 68 42824C00 push 004C8242
004C822D |> 8D45 F8 lea eax, dword ptr [ebp-8]
004C8230 |. BA 02000000 mov edx, 2
004C8235 |> E8 CEB9F3FF call 00403C08
004C823A \. C3 retn
然后一句句的看最后发现跳转是与内存数据00E3FACC这个位置有关,于是设内存断点,可以肯定的是内存数据00E3FACC这个位置的改写是在这个SWITCH过程之外.但在弹出密码输入框到弹出密码错误框之间也没有访问或改写00E3FACC这个位置.真不明白这个软件是怎么运作的.
最后还是什么也没找到
[课程]Linux pwn 探索篇!