160 - 15 blaster99.exe

xiaoxiao2021-02-28  115

环境:

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

转载请注明原文地址: https://www.6miu.com/read-48928.html

最新回复(0)