160 - 9 Andrnalin.2

来源:互联网 发布:淘宝运营策划案 编辑:程序博客网 时间:2024/06/16 04:19

环境:

Windows xp sp3


打开,这次升级了,有个Name和一个Key,输入:

Name:goodname

Key:12345678

肯定错误。拿到错误信息的字符串


查壳,无壳的VB程序。

直接OD载入,字符串搜索,找到刚刚得错误信息的字符串


00402308 UNICODE "RiCHTiG !"                                  ;这个和之前那个一个样嘛00402327 UNICODE "  RiCHTiG !!!!   ....  weiter mit dem N"004023C2 UNICODE "LEiDER Falsch !  "004023E1 UNICODE "Leider Falsch!   Nochmal veruschen ! Wenn Du es nicht schaffen solltest, schreib mir !  Andrenalin@g"


00402176   .  66:8985 4CFFF>mov word ptr ss:[ebp-0xB4],ax            ; 上面一个函数是取Name的字符的值,保存到ax0040217D   .  8D55 CC       lea edx,dword ptr ss:[ebp-0x34]00402180   .  8D85 44FFFFFF lea eax,dword ptr ss:[ebp-0xBC]00402186   .  52            push edx                                 ; /var1800402187   .  8D8D 74FFFFFF lea ecx,dword ptr ss:[ebp-0x8C]          ; |0040218D   .  50            push eax                                 ; |var280040218E   .  51            push ecx                                 ; |saveto80040218F   .  899D 44FFFFFF mov dword ptr ss:[ebp-0xBC],ebx          ; |00402195   .  FF15 94414000 call dword ptr ds:[<&MSVBVM50.__vbaVarAd>; \__vbaVarAdd0040219B   .  8BD0          mov edx,eax                              ;  这个是将当前字符的值和前面字符的值之和加起来0040219D   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]004021A0   .  FFD6          call esi004021A2   .  8D4D A8       lea ecx,dword ptr ss:[ebp-0x58]004021A5   .  FF15 B8414000 call dword ptr ds:[<&MSVBVM50.__vbaFreeS>;  MSVBVM50.__vbaFreeStr
004021D1   .^\E9 5CFFFFFF   jmp Andréna.00402132                     ;  这个jmp上面的内容是将Name输入的字符都加起来,goodname是:34A,保存在[ebp-2C]中004021D6   >  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]004021D9   .  8D95 54FFFFFF lea edx,dword ptr ss:[ebp-0xAC]004021DF   .  51            push ecx                                            ; /var18004021E0   .  8D45 94       lea eax,dword ptr ss:[ebp-0x6C]                    ; |004021E3   .  52            push edx                                                ; |var28004021E4   .  50            push eax                                                ; |SaveTo8004021E5   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],0x499602D2            ; |004021EF   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x3                         ; | 004021F9   .  FF15 5C414000 call dword ptr ds:[<&MSVBVM50.__vbaVarMu>         ; \__vbaVarMul004021FF   .  8BD0          mov edx,eax            ; 上面这个Mul是将加起来的值乘以0x499602D2


上面那一段内容是算出用到的值X。

下面的内容是往X里面添加“-”,让它看上去更像Key


00402204   .  FFD6          call esi                                 00402206   .  8B1D A0414000 mov ebx,dword ptr ds:[<&MSVBVM50.__vbaMi>;  MSVBVM50.__vbaMidStmtVar0040220C   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]          ;  加-0040220F   .  51            push ecx00402210   .  6A 04         push 0x4                                 ;  位置00402212   .  8D95 54FFFFFF lea edx,dword ptr ss:[ebp-0xAC]00402218   .  6A 01         push 0x1                                 ;  数量0040221A   .  52            push edx0040221B   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.0040>;  这是"-"00402225   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x80040222F   .  FFD3          call ebx                                 ;  <&MSVBVM50.__vbaMidStmtVar>00402231   .  8D45 CC       lea eax,dword ptr ss:[ebp-0x34]          ;  同上00402234   .  8D8D 54FFFFFF lea ecx,dword ptr ss:[ebp-0xAC]0040223A   .  50            push eax0040223B   .  6A 09         push 0x90040223D   .  6A 01         push 0x10040223F   .  51            push ecx00402240   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.0040>0040224A   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x800402254   .  FFD3          call ebx                                 ; 这个调用的函数和上面的一样

总结就是:

设:

输入的字符串为Name,

X是Name每一位加起来的结果

sum_1是最后计算的结果,sum_1 = X*0x499602D2 (转成10进制就是1234567890)

然后再对sum_1进行修改,在第4个数字和第9个数字位置改为“-”

于是:

Name::goodname

X = 34A

sum_1 = 1039506163380

sum_2 = 103-5061-3380

所以:

Key :103-5061-3380






0 0
原创粉丝点击