160 - 9 Andrnalin.2

环境:

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的字符的值,保存到ax
0040217D   .  8D55 CC       lea edx,dword ptr ss:[ebp-0x34]
00402180   .  8D85 44FFFFFF lea eax,dword ptr ss:[ebp-0xBC]
00402186   .  52            push edx                                 ; /var18
00402187   .  8D8D 74FFFFFF lea ecx,dword ptr ss:[ebp-0x8C]          ; |
0040218D   .  50            push eax                                 ; |var28
0040218E   .  51            push ecx                                 ; |saveto8
0040218F   .  899D 44FFFFFF mov dword ptr ss:[ebp-0xBC],ebx          ; |
00402195   .  FF15 94414000 call dword ptr ds:[<&MSVBVM50.__vbaVarAd>; \__vbaVarAdd
0040219B   .  8BD0          mov edx,eax                              ;  这个是将当前字符的值和前面字符的值之和加起来
0040219D   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]
004021A0   .  FFD6          call esi
004021A2   .  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                                	            ; /var18
004021E0   .  8D45 94       lea eax,dword ptr ss:[ebp-0x6C]        	            ; |
004021E3   .  52            push edx                                                ; |var28
004021E4   .  50            push eax                                                ; |SaveTo8
004021E5   .  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>     	    ; \__vbaVarMul
004021FF   .  8BD0          mov edx,eax					            ; 上面这个Mul是将加起来的值乘以0x499602D2


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

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


00402204   .  FFD6          call esi                                 
00402206   .  8B1D A0414000 mov ebx,dword ptr ds:[<&MSVBVM50.__vbaMi>;  MSVBVM50.__vbaMidStmtVar
0040220C   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]          ;  加-
0040220F   .  51            push ecx
00402210   .  6A 04         push 0x4                                 ;  位置
00402212   .  8D95 54FFFFFF lea edx,dword ptr ss:[ebp-0xAC]
00402218   .  6A 01         push 0x1                                 ;  数量
0040221A   .  52            push edx
0040221B   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.0040>;  这是"-"
00402225   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x8
0040222F   .  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 eax
0040223B   .  6A 09         push 0x9
0040223D   .  6A 01         push 0x1
0040223F   .  51            push ecx
00402240   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.0040>
0040224A   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x8
00402254   .  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值