作者:sunwear[E.S.T]
MAIL:shellcoder#163.com [email protected]
http://blog.csdn.net/sunwear
http://www.eviloctal.com/
感谢dancefire的帮忙 :)
智能ABC输入法漏洞已经被人发现很久了,广泛用于网吧计费系统的破解。不过很少有人去研究他是怎么溢出的。所以我也是闲的无事分析一下他的溢出。
需要的工具:ollydbg 哪都有下载的地方。
首先用OD打开笔记本。然后切换输入法到智能ABC,输入v,左箭头delete ,回车(空格也可以)。然后立刻造成进程死掉,然后OD的信息会告诉你问题出在7380****.而7380****属于winabc.ime的地址。经过跟踪,确定出错指令为ImeToAsciiEx函数,此函数是用来处理输入的字符。每按一个键就会调用一次,当上面这个动作做完后又调用了 0x7380AC95函数。下面是这个函数的汇编代码
7380ACA1 |> 66:81FE 3D80 CMP SI,803D ;si为你按的那个键的hex值
7380ACA6 |. 75 26 JNZ SHORT WINABC.7380ACCE
7380ACA8 |. 803D B0298173 >CMP BYTE PTR DS:[738129B0],3 ;3为输入中间阶段
7380ACAF |. 0F84 E7010000 JE WINABC.7380AE9C
7380ACB5 |. 833D AC298173 >CMP DWORD PTR DS:[738129AC],1
7380ACBC |. 0F8E DA010000 JLE WINABC.7380AE9C
7380ACC2 |. C605 B0298173 >MOV BYTE PTR DS:[738129B0],1
7380ACC9 |. E9 CE010000 JMP WINABC.7380AE9C
下面在来看一段关于0x7380AC95的代码
7380ADB4 |> 56 PUSH ESI
7380ADB5 |. E8 58140000