160 - 15 blaster99.exe

环境:

windows xp sp 3


工具:

Ollydbg 和 exeinfo pe


查壳,还是无壳的vb程序。


打开,有一个nag窗口,点击”确认”的话才会弹出输入serial的窗口,点“取消”的话会关闭程序


OD载入,运行到弹出nag窗口的时候,F12停下来,然后ALT+ F9,点“确认”。

00402CF0   .  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
00402CF3   .  50            push eax
00402CF4   .  E8 21E4FFFF   call <jmp.&MSVBVM50.__vbaI4Var>
00402CF9   .  50            push eax
00402CFA   .  8D45 AC       lea eax,dword ptr ss:[ebp-0x54]
00402CFD      50            push eax
00402CFE      E8 1DE4FFFF   call <jmp.&MSVBVM50.#595>		;这是个MessageBox
00402D03   .  8D95 5CFFFFFF lea edx,dword ptr ss:[ebp-0xA4]	;停在这里
00402D09   .  8D4D BC       lea ecx,dword ptr ss:[ebp-0x44]
00402D0C   .  8985 64FFFFFF mov dword ptr ss:[ebp-0x9C],eax


除Nag窗口: .点击MessageBox的“确认”后eax的值为1,所以将00402CFE的指令改为: mov eax,0x1


然后往上翻一翻看看有什么:


00402A69   .  C785 7CFFFFFF>mov dword ptr ss:[ebp-0x84],blaster9.004>;  UNICODE "Error ! Das Passwort ist falsch !"
00402A73   .  C785 74FFFFFF>mov dword ptr ss:[ebp-0x8C],0x8
00402A7D   .  E8 AAE6FFFF   call <jmp.&MSVBVM50.__vbaVarCopy>
00402A82   .  8D95 74FFFFFF lea edx,dword ptr ss:[ebp-0x8C]
00402A88   .  8D4D DC       lea ecx,dword ptr ss:[ebp-0x24]
00402A8B   .  C785 7CFFFFFF>mov dword ptr ss:[ebp-0x84],0x10
00402A95   .  899D 74FFFFFF mov dword ptr ss:[ebp-0x8C],ebx
00402A9B   .  E8 86E6FFFF   call <jmp.&MSVBVM50.__vbaVarMove>
00402AA0   .  8D95 74FFFFFF lea edx,dword ptr ss:[ebp-0x8C]
00402AA6   .  8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]
00402AA9   .  C785 7CFFFFFF>mov dword ptr ss:[ebp-0x84],blaster9.004>;  UNICODE "PASSWORT FALSCH !"
00402AB3   .  C785 74FFFFFF>mov dword ptr ss:[ebp-0x8C],0x8



有个错误信息内容,可以猜测上面就是serial的比较地方。


突然间出现了这个:

00402A2A   .  68 DC1D4000   push blaster9.00401DDC                   ;  UNICODE "2G83G35Hs2"


将这个输入进去看看是什么东西:


虽然看不懂消息框弹出的内容,但是显然消息框的内容不一样了。应该就是成功了。

这次比较简单。


004028BA   > \FF75 A8       push dword ptr ss:[ebp-0x58]             ;  输入的serial
004028BD   .  68 DC1D4000   push blaster9.00401DDC                   ;  UNICODE "2G83G35Hs2"
004028C2   .  E8 83E8FFFF   call <jmp.&MSVBVM50.__vbaStrCmp>
004028C7   .  8BF8          mov edi,eax                              ;  比较结果存放到edi
004028C9   .  8D4D A8       lea ecx,dword ptr ss:[ebp-0x58]
004028CC   .  F7DF          neg edi                                  ;  取补
004028CE   .  1BFF          sbb edi,edi				     ;  edi - edi - cf
004028D0   .  47            inc edi			             ;  edi + 1 
004028D1   .  F7DF          neg edi                                  ;  取补
004028D3   .  E8 60E8FFFF   call <jmp.&MSVBVM50.__vbaFreeStr>
004028D8   .  8D4D A4       lea ecx,dword ptr ss:[ebp-0x5C]
004028DB   .  E8 52E8FFFF   call <jmp.&MSVBVM50.__vbaFreeObj>
004028E0   .  66:3BFE       cmp di,si				     ; si 为0
004028E3   .  0F84 F3000000 je blaster9.004029DC		     ; 不能跳



上面的计算过程可以看出,假如比较结果不为0时,一系列运算导致edi变成0

假如比较结果不为0,一系列运算会使得edi为非0



明文比较:2G83G35Hs2




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值