破解过程:
1.有人说olldbg没有什么用,为了反驳这种无知的想法,我以这个例子做一个小小的证明。这里只用到了olldbg十分之一不到的功能,不过已经够了。这里我假设你对olldbg有一定的认识。
2.open “qqpic.exe” ollydbg报告该软件加壳(asprotect),不管它,按F9运行。进入注册画面,随便输入名字和注册码,按“确定”,跳出错误画面。
3.进入olldbg,按ALT+M,在memory map窗口,选中qqpic的code段,右键选中dump in cpu
4.在cpu窗口的memory在窗口,search for binary string,在ASCII处键入“注册码”,search后发现了
004B2A14 C4 FA CA E4 C8 EB B5 C4 您输入的
004B2A1C D7 A2 B2 E1 C2 EB CE DE 注册码无
004B2A24 D0 A7 效!
5.在选中处右击,选find refrence,只有一个结果,双击后,在dissamble窗口可以见到如下代码
004B2977 E8 50F7FFFF CALL QQPIC.004B20CC <-判断注册码的程序(用到了ASCII形式的二进制算法)
004B297C . 3C 01 CMP AL,1 <-判断语句
004B297E . 75 0C JNZ SHORT QQPIC.004B298C
004B2980 . B8 FC294B00 MOV EAX,QQPIC.004B29FC
004B2985 . E8 2AEBF9FF CALL QQPIC.004514B4
004B298A . EB 0A JMP SHORT QQPIC.004B2996
004B298C > B8 142A4B00 MOV EAX,QQPIC.004B2A14 <-初始化出错画面 004B2991 . E8 1EEBF9FF CALL QQPIC.004514B4
6。显然CALL QQPIC.004B20CC是关键,在该语句处find refrences to call destination,共有5处,显然有可能有5处判断的地方。(实际上是两处,但关键的就一处)
7.不到一分钟,我就跟踪到了关键代码了。
小结:
1.因为软件加了壳,在不脱壳的情况下,WDASM和ida没有什么用,而且就算不加壳,单单反编译就会超过1分钟
2.如果用trw2000或softice,高手吗,用一些命令也可以做到。而新手就要按F12和F10了,反正我没试过,可能也很快吧!
by slimboy[BCG]
上边这些本论坛2002年一个朋友发的文章,我只是随便找个例子,想说明自己的想法。
就是上边代码处!我想知道,高手们是怎么知道各各代码的含义的?
比如004B298C > B8 142A4B00 MOV EAX,QQPIC.004B2A14 <-初始化出错画面
这一句,难道就单单看这么一长串,就知道含义吗?
朋友说我啥也不会,先看看王爽的汇编语言教程,我下载了,看了有几页了,我是想说,如果我把全书看完,并能对书中的一些指令,如 mov,jnz,bx,ax之类的多多了解的话,我就也能看懂这些调试代码了吗?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课