声明:
本次逆向不以破坏QQ功能为目的
本次逆向不以耍流氓为目的
纯属学习娱乐
QQ版本:QQ2010 1, 55, 1870, 0
工具:OD VS2005
目的:截获QQ明文消息
定位到的关键代码段(位于GF.dll中):
3088F210 . 55 push ebp
3088F211 . 8BEC mov ebp, esp
3088F213 . 8B45 10 mov eax, dword ptr [ebp+10]
3088F216 . 8B4D 0C mov ecx, dword ptr [ebp+C]
3088F219 . 6A 00 push 0
3088F21B ? 50 push eax
3088F21C ? 51 push ecx
3088F21D ? 8B4D 08 mov ecx, dword ptr [ebp+8]
3088F220 . 83C1 04 add ecx, 4
3088F223 ? E8 28ACFFFF call 30889E50
这部分就消息包和富文本框的交互,所以可以截获到很多东西..比如昵称 发送时间 消息内容 个性签名。
编写代码做Hook(额 代码写的超烂已经遭到无数人的鄙视了不要拍了...):
#include "stdafx.h"
DWORD dwQCMsg;
LPCWSTR lptext;
VOID QCMain()
{
lptext = (LPCWSTR)dwQCMsg;
MessageBox(NULL,lptext,L"QQ",MB_OK);
return;
}
VOID AutoSendRequest()
{
__asm{
push 0
push eax
push ecx
mov dwQCMsg,ecx
mov ecx, dword ptr [ebp+8]
add ecx,4
pushad
call QCMain
popad
}
__asm{
mov eax,0x3088F223
jmp eax
}
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
__asm{
mov eax,AutoSendRequest
sub eax,0x3088f21d
add eax,5
mov ebx,0x3088f219
mov word ptr [ebx], 0xe9
mov dword ptr [ebx+1],eax
mov dword ptr [ebx+5],0x9090909090
}
return TRUE;
}
注入DLL到QQ进程,就不写了QQ没有这个保护..
处女文不喜勿拍...
最后给个编译好的DLL
需要手动修改GF.dll的Text段的读写属性...
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界