英语会话精灵 V2.0 算法分析

时间:2005-12-20 来源: 作者: 点击:
作者声明:初学破解,纯属技术交流,无其它目的。 工具:ollyDBg1.09,W32Dasm10,Caspr110脱壳工具。 假设: 用户编号:222961388 注册码:654321 一、先脱壳,查找出错信息。 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0047A05C(C) | :00
  作者声明:初学破解,纯属技术交流,无其它目的。
工具:ollyDBg1.09,W32Dasm10,Caspr110脱壳工具。

假设:
用户编号:222961388
注册码:654321

一、先脱壳,查找出错信息。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047A05C(C)
|
:0047A19F 6830000400              push 00040030
:0047A1A4 B908A24700              mov ecx, 0047A208

* Possible StringData Ref from Code Obj ->"注册码无效!"
                                 |
:0047A1A9 BA6CA24700              mov edx, 0047A26C
:0047A1AE A1E8794B00              mov eax, dword ptr [004B79E8]
:0047A1B3 8B00                    mov eax, dword ptr [eax]
:0047A1B5 E8A22AFDFF              call 0044CC5C
:0047A1BA 8B86E8020000            mov eax, dword ptr [esi+000002E8]
:0047A1C0 8B10                    mov edx, dword ptr [eax]
:0047A1C2 FF92CC000000            call dword ptr [edx+000000CC]


向上看:
0047A053 8B55F8                  mov edx, dword ptr [ebp-08]==>在这下断
:0047A056 58                      pop eax
:0047A057 E8489EF8FF              call 00403EA4
:0047A05C 0F853D010000            jne 0047A19F=========>
:0047A062 6840000400              push 00040040
:0047A067 B908A24700              mov ecx, 0047A208

* Possible StringData Ref from Code Obj ->"注册成功!请保留好您的注册码,谢谢!"
                                 |

二、用ollydbg载入,动态分析。
0047A002  |.  8B1D 28784B00 MOV EBX,DWORD PTR DS:[4B7828]            ;  unpacked.004B8930
0047A008  |.  33C0          XOR EAX,EAX
0047A00A  |.  55            PUSH EBP
0047A00B  |.  68 FBA14700   PUSH unpacked.0047A1FB
0047A010  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0047A013  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0047A016  |.  6A 00         PUSH 0
0047A018  |.  6A 1B         PUSH 1B
0047A01A  |.  E8 A9FDFFFF   CALL unpacked.00479DC8                   ;  用户编号十六进制值入eax,此eax=0D4A1EEC
0047A01F  |.  2D 1F17F601   SUB EAX,1F6171F                          ;  eax减1F6171F,eax=B5407CD
0047A024  |.  83DA 00       SBB EDX,0
0047A027  |.  E8 44C5F8FF   CALL unpacked.00406570                   ;  B5407CD值乘以1b,此eax=131DCD29F
0047A02C  |.  52            PUSH EDX                                 ; /Arg2
0047A02D  |.  50            PUSH EAX                                 ; |Arg1
0047A02E  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ; |
0047A031  |.  E8 6AE9F8FF   CALL unpacked.004089A0                   ; \把串31DCD29F转换为十进制,即为5131522719
0047A036  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0047A039  |.  50            PUSH EAX
0047A03A  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
0047A03D  |.  8B86 E8020000 MOV EAX,DWORD PTR DS:[ESI+2E8]
0047A043  |.  E8 444AFBFF   CALL unpacked.0042EA8C                   ;  取输入注册码
0047A048  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
0047A04B  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
0047A04E  |.  E8 9DE7F8FF   CALL unpacked.004087F0
0047A053  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]             ;  输入注册码,此为edx=654321
0047A056  |.  58            POP EAX                                  ;  真码入eax
0047A057  |.  E8 489EF8FF   CALL unpacked.00403EA4                   ;  关键比较unpa
0047A05C  |.  0F85 3D010000 JNZ unpacked.0047A19F                    ;  不等就跳npac
0047A062  |.  68 40000400   PUSH 40040


总结:

1、用户编号转为十六进制:222961388->D4A1EEC
2、十六进制值减1F6171F:D4A1EEC-1F6171F=B5407CD
3、第二步的值乘1b:B5407CD*1b=131DCD29F
4、第三步的值转为十进制就是注册码:131DCD29F->5131522719


所以我的注册码如下:
   用户编号:222961388
   注册码:5131522719

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容