用OD对一软件进行破解,软件使用在线验证用户名密码方式,PEID查壳为ASProtect 2.1x SKE -> Alexey Solodovnikov,由于脱壳太费时间体力,所以决定带壳调试,但是发现其网络验证部分是用一个INT 2B中断实现得,猜测可能改了中断地址表(记得这是DOS时代经常用的了),下面贴出部分代码,请高手指教,另外是不是OD现在就无法继续操作了?要用SOFTICE才可以操作中断地址表.
方法:首先忽略所有异常,让程序跑到登陆界面,然后输入用户名123456,密码654321,用OD插件ApiBreak下万能断点,点程序确定键,如下:
77D3353D F3:A5 rep movs dword ptr es:[edi], dword p>
EAX 00000006
ECX 00000001
EDX 00140608
EBX 00000006
ESP 0012E2F0
EBP 0012E300
ESI 001565E0 ASCII "123456"
EDI 0012E498
EIP 77D3353D USER32.77D3353D
看到用户名了
F9继续,断下,还是这个地址:
EAX 00000006
ECX 00000001
EDX 00140635
EBX 00000006
ESP 0012E2F0
EBP 0012E300
ESI 00156618 ASCII "654321"
EDI 0012E498 ASCII "123456"
EIP 77D3353D USER32.77D3353D
能看到密码了,然后F8单步跟,用网络防火墙拦住该程序网络访问,到如下地址防火墙弹出提示窗口是否允许该程序访问网络了
77D2EC8D 6A 00 push 0
77D2EC8F 6A 0C push 0C
77D2EC91 5A pop edx
77D2EC92 8D8D F0F7FFFF lea ecx, [ebp-810]
77D2EC98 8985 F0F7FFFF mov [ebp-810], eax
77D2EC9E E8 01A8FEFF call 77D194A4 就是这里出现提示是否可以访问网络
推断该CALL为发送用户名密码的函数,点确定之后,继续F8程序提示密码错误,所以该CALL发送并且验证了密码,于是跟进CALL,代码:
77D194A4 8B4424 04 mov eax, [esp+4]
77D194A8 CD 2B int 2B
77D194AA C2 0400 retn 4
当F8到INT 2B出现密码错误提示,请教各位高手,推断是否正确,如何才能跟进这个INT 2B,OD可以不可以啊,
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课