160个练手CrackMe-020
来源:互联网 发布:fastdfs nginx 400 编辑:程序博客网 时间:2024/06/14 12:41
1、查壳,Delphi编写
WWPack32 1.x -> Piotr Warezak,比较简单的壳。
2、脱壳
首先要了解下Delphi程序的OEP格式。
OD载入,单步跟踪,向上跳转的地方直接在它下一行F4,慢慢跟。
当遇到一个大的JMP,基本就是OEP了。
OEP:
反汇编窗口右击,用OllyDump脱壳调试程序。
直接点脱壳,保存,方式1不行就尝试方式2。
再查壳,直接显示Delphi,双击看能不能运行。
3、DarkDe4定位按钮事件
0044A2E8 /. 55 push ebp ; Spider_Click0044A2E9 |. 8BEC mov ebp,esp0044A2EB |. 33C9 xor ecx,ecx0044A2ED |. 51 push ecx0044A2EE |. 51 push ecx0044A2EF |. 51 push ecx0044A2F0 |. 51 push ecx0044A2F1 |. 53 push ebx0044A2F2 |. 56 push esi0044A2F3 |. 8BD8 mov ebx,eax0044A2F5 |. 33C0 xor eax,eax0044A2F7 |. 55 push ebp0044A2F8 |. 68 E4A34400 push BuLLeT_8.0044A3E40044A2FD |. 64:FF30 push dword ptr fs:[eax]0044A300 |. 64:8920 mov dword ptr fs:[eax],esp0044A303 |. 8D55 FC lea edx,[local.1]0044A306 |. 8B83 C8020000 mov eax,dword ptr ds:[ebx+0x2C8]0044A30C |. E8 FBA0FDFF call BuLLeT_8.0042440C ; 获取Serial0044A311 |. 8B45 FC mov eax,[local.1]0044A314 |. E8 EFD6FBFF call BuLLeT_8.00407A08 ; int_ser = atoi(Serial)0044A319 |. 8BF0 mov esi,eax0044A31B |. 8B45 FC mov eax,[local.1]0044A31E |. E8 5DD7FBFF call BuLLeT_8.00407A800044A323 |. 52 push edx0044A324 |. 50 push eax0044A325 |. 8BC6 mov eax,esi0044A327 |. 99 cdq0044A328 |. 030424 add eax,dword ptr ss:[esp] ; sum = int_ser + int_ser0044A32B |. 135424 04 adc edx,dword ptr ss:[esp+0x4]0044A32F |. 83C4 08 add esp,0x80044A332 |. 52 push edx0044A333 |. 50 push eax0044A334 |. 8BC6 mov eax,esi0044A336 |. 99 cdq0044A337 |. 030424 add eax,dword ptr ss:[esp] ; sum += int_ser 即 int_ser * 30044A33A |. 135424 04 adc edx,dword ptr ss:[esp+0x4]0044A33E |. 83C4 08 add esp,0x80044A341 |. 52 push edx0044A342 |. 50 push eax0044A343 |. 8D55 F8 lea edx,[local.2]0044A346 |. B8 06000000 mov eax,0x60044A34B |. E8 78D6FBFF call BuLLeT_8.004079C8 ; itoa(sum)0044A350 |. 8B55 F8 mov edx,[local.2]0044A353 |. 8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC]0044A359 |. E8 DEA0FDFF call BuLLeT_8.0042443C0044A35E |. 8D55 F4 lea edx,[local.3]0044A361 |. 8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC]0044A367 |. E8 A0A0FDFF call BuLLeT_8.0042440C0044A36C |. 8B45 F4 mov eax,[local.3]0044A36F |. 50 push eax0044A370 |. 8D55 F0 lea edx,[local.4]0044A373 |. 8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]0044A379 |. E8 8EA0FDFF call BuLLeT_8.0042440C0044A37E |. 8B55 F0 mov edx,[local.4]0044A381 |. 58 pop eax0044A382 |. E8 6198FBFF call BuLLeT_8.00403BE8 ; 比较函数Strcmp(eax,edx)0044A387 75 0F jnz XBuLLeT_8.0044A398 ; 爆破点0044A389 |. B2 01 mov dl,0x10044A38B |. 8B83 FC020000 mov eax,dword ptr ds:[ebx+0x2FC]0044A391 |. E8 669FFDFF call BuLLeT_8.004242FC0044A396 |. EB 11 jmp XBuLLeT_8.0044A3A90044A398 |> 8B83 D4020000 mov eax,dword ptr ds:[ebx+0x2D4]
0044A382 是比较函数,edx里面存的是正确的结果“3E74984B”,也就是软件界面提示的值。
总结下算法过程:
- 输入Serial
- Ser转为整数型
乘以3后的结果和3E74984B比较
所以正确的Serial = 0x3E74984B / 3 = 349276185
阅读全文
0 0
- 160个练手CrackMe-020
- 160个练手CrackMe-001
- 160个练手CrackMe-002
- 160个练手CrackMe-003
- 160个练手CrackMe-004
- 160个练手CrackMe-005
- 160个练手CrackMe-006
- 160个练手CrackMe-007
- 160个练手CrackMe-008
- 160个练手CrackMe-009
- 160个练手CrackMe-010
- 160个练手CrackMe-011
- 160个练手CrackMe-012
- 160个练手CrackMe-013
- 160个练手CrackMe-014
- 160个练手CrackMe-015
- 160个练手CrackMe-016
- 160个练手CrackMe-017
- 天池历届大赛答辩PPT及视频
- Struts2:二
- Ubuntu上通过源码安装QEMU
- 三子棋
- linux学习之vi/vim编辑器
- 160个练手CrackMe-020
- C231n-KNN-assignment1-完全代码及注释
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
- python3 类的构造器 __init__
- 微服务权限问题认证方式,简单学习
- 西瓜书《机器学习》课后答案——chapter10 降维与度量学习
- 第九周训练总结(一)
- Linux--机器性能分析
- IOS 截取屏幕截图方法