Trao đổi với tôi

http://www.buidao.com

1/29/10

[PE File] How to adding a section to a PE file

Khái niệm add code hay code injection không còn quá lạ lẫm, đơn giản đó chỉ là một cách can thiệp vào đoạn code của chương trình, sau đó là add thêm đoạn code của bạn vào. Kỹ thuật này được dùng để reverse một protection schema hay thêm một chức năng nào đó vào PE File. Có 3 phương pháp chính để có thể add code vào trong một file thực thi. Việc lựa chọn phương pháp nào là phù hợp tùy thuộc vào từng trường hợp, nó cũng phụ thuộc vào chương trình của bạn như thế nào và kích thước vùng code bạn thêm vào là bao nhiêu.

Download: http://www.mediafire.com/download.php?zzyyxgri522

RefLink: http://nhatphuongle.spaces.live.com/blog/cns!320FF19317F0C9A2!471.entry

[PE File] Understanding RVAs and Import Tables

Sau khi đã hiểu rõ về section table. Chúng ta bắt đầu tìm hiểu Import Table. Import Table là một bảng chứa các hàm được file thực thi import từ DLLs. Tìm hiểu về Import Table khá lý thú nhưng phức tạp hơn so với tìm hiểu về section table hay thêm một section mới vào PE File. Nó phức tạp ở chỗ, tất cả đều sử dụng địa chỉ RVAs. Vì thế tôi quyết định sẽ nói về RVAs trước khi tìm hiểu Import Table.



Những công cụ & yêu cầu cần thiết:



- Hex Editor (WinHex, Hex Workshop, …). Tôi sử dụng WinHex

- PE Tools (PEditor, LordPE)

- My SecMaker v2 để add new section (hoặc bạn có thể add by manually)

- Win32 API Reference

- Kiến thức về Win32 API, PE File và Assembly



Download: http://www.mediafire.com/download.php?ilzmyymy252

RefLink: http://nhatphuongle.spaces.live.com/blog/cns!320FF19317F0C9A2!472.entry

[System Info] Tìm hiểu về tiến trình jusched.exe

Nếu bạn vào Task Manager và nhìn thấy tiến trình jusched.exe trong đó, và nếu bạn có thể tắt nó đi, thì đó quả là điều may mắn. Tiến trình này thật ra là thời gian biểu để cập nhật Java, nó thật sự tiêu tốn nhiều bộ nhớ chỉ để kiểm tra mỗi tháng một lần bản cập nhật của Java.

Và nếu bạn muốn tắt nó đi để giảm bớt sự lãng phí tài nguyên hệ thống, thì đầu tiên bạn mở Control Panel, sau đó nhấp kép vào biểu tượng Java. Nếu trong Windows Vista, bạn nhấp kéo vào Additional Options, sau đó nhấp vào Java.

Sau khi hộp thoại Java Control Panel được mở ra, chọn thẻ Update, sau đó bỏ chọn tại ô “Check for Updates Automatically

Bạn sẽ nhận được một thông điệp cảnh báo như sau:

Sau khi bạn nhấn vào nút Never Check, bạn có thể sẽ nhận được thông báo lỗi này nếu bạn đang dùng Windows Vista:

Nếu bỏ tính năng tự cập nhật này đi, chúng ta sẽ bị mất những bản cập nhật để khắc phục các vấn đề của Java. Ở đây chúng ta có giải pháp khác để thay thế là tạo một lịch trình chạy hàng tháng sử dụng Task Scheduler.

Schedule Java Update Check (Optional)

Task Scheduler vào ô search trong menu Start để mở Task Scheduler, sao đó chọn Create Basic Task.

Trình wizard sẽ cho phép bạn chọn ngày và tháng, sau đó bạn sẽ gặp màn hình “Start a program”, sử dụng đường dẫn dưới đây, nếu bạn sử dụng một phiên bản khác của Java thì hãy thay đổi.

C:\Program Files\Java\jre1.6.0_01\bin\jucheck.exe

Bây giờ khi task vừa tạo ở trên chạy một lần một tháng, bạn sẽ nhận được hộp thoại sau nếu có một phiên bản mới.

Ngọc Quang (Theo Howtogeek)

[Hacking] [SQL injection] Part 1: Các dạng lỗi thường gặp

SQL injection là một kỹ thuật điền vào những đoạn mã SQL bất hợp pháp cho phép khai thác một lỗ hổng bảo mật tồn tại trong cơ sở dữa liệu của một ứng dụng. Lỗ hổng bảo mật này có thể xuất hiện khi ứng dụng không có đoạn mã kiểm tra chuỗi ký tự thoát nhúng trong câu truy vấn SQL hoặc do sự định kiểu đầu vào không rõ ràng hay do lỗi cú pháp SQL của lập trình viên khiến cho một đoạn mã ngoại lai có thể được sử lý ngoài ý muốn. Nó là một ví dụ của sự rủi ro khi một ngôn ngữ lập trình hay ngôn ngữ kịch bản được nhúng trong một ngôn ngữ khác. Tấn công SQL injection còn có thể hiểu là hình thức tấn công chèn bất hợp pháp các đoạn mã SQL.
1. Các dạng lỗi thường gặp
1.1/ Không kiểm tra ký tự thoát truy vấn
Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL. Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng. Dòng mã sau sẽ minh họa lỗi này:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
Câu lệnh này được thiết kế để trả về các bản ghi tên người dùng cụ thể từ bảng những người dùng. Tuy nhiên, nếu biến "userName" được nhập chính xác theo một cách nào đó bởi người dùng ác ý, nó có thể trở thành một câu truy vấn SQL với mục đích khác hẳn so với mong muốn của tác giả đoạn mã trên. Ví dụ, ta nhập vào giá trị của biến userName như sau:
a' or 't'='t
Khiến câu truy vấn có thể được hiểu như sau:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
Nếu đoạn mã trên được sử dụng trong một thủ tục xác thực thì ví dụ trên có thể được sử dụng để bắt buộc lựa chọn một tên người dùng hợp lệ bởi 't'='t' luôn đúng. Trong khi hầu hết các SQL server cho phép thực hiện nhiều truy vấn cùng lúc chỉ với một lần gọi, tuy nhiên một số SQL API như mysql_query của php lại không cho phép điều đó vì lý do bảo mật. Điều này chỉ ngăn cản tin tặc tấn công bằng cách sử dụng các câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi các từ trong cú pháp truy vấn. Các giá trị của biến "userName" trong câu truy vấn dưới đây sẽ gây ra việc xoá những người dùng từ bảng người dùng cũng tương tự như việc xóa tất cả các dữ liệu được từ bảng dữ liệu (về bản chất là tiết lộ các thông tin của mọi người dùng), ví dụ này minh họa bằng một API cho phéo thực hiện nhiều truy vấn cùng lúc:
a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't
Điều này đưa tới cú pháp cuối cùng của câu truy vấn trên như sau:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't';
1.2/ Xử lý không đúng kiểu
Lỗi SQL injection dạng này thường xảy ra do lập trình viên hay người dùng định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu đầu vào. Điều này có thể xảy ra khi một trường số được sử dụng trong truy vấn SQL nhưng lập trình viên lại thiếu bước kiểm tra dữ liệu đầu vào để xác minh kiểu của dữ liệu mà người dùng nhập vào có phải là số hay không. Ví dụ như sau:
statement := "SELECT * FROM data WHERE id = " + a_variable + ";"
Ta có thể nhận thấy một cách rõ ràng ý định của tác giả đoạn mã trên là nhập vào một số tương ứng với trường id - trường số. Tuy nhiên, người dùng cuối, thay vì nhập vào một số, họ có thể nhập vào một chuỗi ký tự, và do vậy có thể trở thành một câu truy vấn SQL hoàn chỉnh mới mà bỏ qua ký tự thoát. Ví dụ, ta thiết lập giá trị của biến a_variable là:
1;DROP TABLE users
khi đó, nó sẽ thực hiện thao tác xóa người dùng có id tương ứng khỏi cơ sở dữ liệu, vì câu truy vấn hoàn chỉnh đã được hiểu là:
SELECT * FROM DATA WHERE id=1;DROP TABLE users;
1.3/ Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu
Đôi khi lỗ hổng có thể tồn tại chính trong phần mềm máy chủ cơ sở dữ liệu, như là trường hợp hàm mysql_real_escape_string() của các máy chủ MySQL. Điều này sẽ cho phép kẻ tấn công có thể thực hiện một cuộc tấn công SQL injection thành công dựa trên những ký tự Unicode không thông thường ngay cả khi đầu nhập vào đang được thoát.
1.4/ Blind SQL injection
Lỗi SQL injection dạng này là dạng lỗi tồn tại ngay trong ứng dụng web nhưng hậu quả của chúng lại không hiển thị trực quan cho những kẻ tấn công. Nó có thể gây ra sự sai khác khi hiển thị nội dung của một trang chứa lỗi bảo mật này, hậu quả của sự tấn công SQL injection dạng này khiến cho lập trình viên hay người dùng phải mất rất nhiều thời gian để phục hồi chính xác từng bit sữ liệu. Những kẻ tấn công còn có thể sử dụng một số công cụ để dò tìm lỗi dạng này và tấn công với những thông tin đã được thiết lập sẵn.
1.4.1/ Thay đổi giá trị điều kiện truy vấn
Dạng lỗi này khiến cho kẻ tấn công có thể thay đổi giá trị điều kiện trong câu truy vấn, làm sai lệch sự hiển thị của một ứng dụng chứa lỗi này.
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1;
Sẽ hiển thị một trang một cách bình thường, trong khi:
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;
sẽ hiển thị một nội dung khác, hoặc không hiển thị gì nếu ứng dụng web có chứa lỗi SQL injection dạng này. Lỗ hổng dạng này còn cho phé tin tặc không chỉ gây ảnh hưởng tới bảng hay dữ liệu hiện tại mà còn ảnh hưởng tới những dữ liệu hay bảng khác phụ thuộc vào nội dung của dữ liệu hay bảng hiện tại.
1.4.2/ Điều kiện lỗi
Lỗi SQL injection dạng này dẫn tới việc buộc cơ sở dữ liệu chỉ được phép đánh giá khi mà giá trị của câu lệnh WHERE là đúng. Ví dụ:
SELECT 1/0 FROM users WHERE username='Ralph';
Phép chia cho 0 chỉ được đánh giá là lỗi khi mà người dùng có tên "Ralph" tồn tại trong cơ sở dữ liệu.
1.4.3/ Thời gian trễ
Lỗi SQL injection dạng này tồn tại khi thời gian xử lý của một hay nhiều truy vấn SQL phụ thuộc vào dữ liệu logic được nhập vào hoặc quá trình xử lý truy vấn của SQL engine cần nhiều thời gian. Tin tặc có thể sử dụng lỗi SQL injection dạng này để xác định thời gian chính xác mà trang cần tải khi giá trị nhập vào là đúng.
(St)



RL: http://hcegroup.net/hceteam/showthread.php?t=385

[Hacking] [SQL injection] Part 2: Một số dạng tấn công thường gặp với các ứng dụng web

2. Một số dạng tấn công thường gặp với các ứng dụng web

Có bốn dạng tấn công thường gặp bao gồm: vượt qua kiểm tra lúc đăng nhập, sử dụng câu lện SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures.
2.1/ Dạng tấn công vượt qua kiểm tra lúc đăng nhập

Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web. Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Ví dụ, trong trường hợp sử dụng ASP, người ta có thể dùng 2 trang : 1 trang HTML để hiển thị Form nhập liệu và 1 trang ASP để xử lý thông tin nhập vào từ phía người dùng như sau:
- Trang nhập liệu: login.htm

Mã:

<form action="ExecLogin.asp" method="post"> 
Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br>
<input type="submit">
</form>

- Trang xử lý nhập liệu: execlogin.asp

Mã:

<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
Set objRS = Nothing %>

Chỗ sơ hở trong đoạn mã xử lý nhập liệu trên nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép tin tặc có thể điều khiển câu truy vấn sẽ được thực hiện. Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password của trang login.htm là: 'OR=. Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME =''OR''='' AND USR_PASSWORD= ''OR''=''
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ.
2.2/ Dạng tấn công sử dụng câu lệnh SELECT

Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Ví dụ, trong các trang tìm kiếm. Các trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:

Mã:

<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _ vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."

Set objRS = Nothing %>

Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa. Giả sử đoạn mã nhập vào là:
' DROP TABLE T_AUTHORS --
Câu truy vấn sẽ thực hiện việc xóa bảng.
2.3/ Dạng tấn công sử dụng câu lệnh INSERT

Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')
Nếu đoạn mã xây dựng câu lệnh SQL có dạng :

Mã:

<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."

Set objRS = Nothing %>

Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như:
' + (SELECT TOP 1 FieldName FROM TableName) + '
Lúc này câu truy vấn sẽ là :
INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')
Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
2.4/ Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
(St)


RefLink: http://hcegroup.net/hceteam/showthread.php?t=387

1/28/10

[MASM] Obfuscator v1.0 + code 1000 credits

Website: http://pelock.com/products/obfuscator
Chỉ hỗ trợ MASM. Enter code và dùng dc 1000 lần.
Code : CAA9-A68A-DDB7-34E8

Download Obfuscator's backend (internet connection required)

VersionFile sizeLocationInstallation
Obfuscator v1.0372 kBobfuscator10.zipWinZip archive
Obfuscator v1.0566 kBobfuscator10.exeInstaller included

Obfuscator is a tool to modify x86 assembler source code in this way to make an analysis of compiled code very difficult. Small example:

It is an unusual tool and the target audience is quite small, but if you're writing assembler code and you want to protect your work from decompilation or just to make it as hard as it's possible to analyze, you might want to try it.

Obfuscator features

Features list:

  • MASM syntax only, processing of @@ labels, detection of local variables, constant equ values, and numbers in different formats (hex, dec)
  • changing code execution flow (non linear code path) - it's usefull against all kinds of debuggers, analysis of such code is very "unpleasant"
  • mutation of original instructions into series of other equivalent opcodes - obfuscator can mutate both arithmetic and logical opcodes
  • hiding of direct calls to functions (including WinApi calls)
  • inserting garbage opcodes between real instructions (so called "junks")
  • inserting fake instructions between real ones, 32/16/8 opcodes are generated
  • no support for code with assume directives
  • obfuscated code is slower than the original code
RefLink: http://virusvn.com/forum/showthread.php?p=12863#post12863

1/27/10

[Programming] Delphi2Cpp Professional v1.1.7

Delphi2Cpp makes a first rough translation of the source code. In most cases a manual post-processing of the produced code will be required. However, it is aim of the program to keep the amount of the post-processing as small as possible.Some language features of Delphi cannot be reproduced adequately in the standard C . They can be reproduced however with the extended capabilities of the CBuilder, thatrsquo;s the C compiler of the same manufacturer, which also produces the Delphi compiler. This extended C is the primary target of the translation made by Delphi2Cpp.The Delphi2Cpp application will save most simple purely mechanical syntactical substitutions and rearrangements of the code in which the largest portion of the translation consists. Some more complex translation steps also are executed too Size:3.9 MB

Download:
Here


1/26/10

[Virus] Keylogger Hot+Video


Download Video
refLink: http://soft0pc.blogspot.com/search/label/KeyLogger%2BTrojan

1/24/10

[Programming] Bộ Ebook Khủng Cho Dân IT và Những Ai Đam Mê Tin Học

Bộ Ebook Khủng Cho Dân IT và Những Ai Đam Mê Tin Học


Bộ Ebook về máy tính và Lập trình

Trích dẫn:

==> Cấu trúc dữ liệu và giải thuật
==> C program collection
==> Ebook C
==> C Plus
==> Bài giảng lập trình C
==> Tổng hợp tất cả bài tập ngôn ngữ C A->Z
==> Học Java qua mẫu chuyện vui craftman
==> Giáo trình Java căn bản
==> Giáo trình Java me
==> giáo trình J2ee
==> Giáo trình lập trình Java
==> Lập trình java trên điện thoại di động
==> 1000 java tips
==> Giáo trình lý thuyết và bài tập java
==> Java name and user interface convention
==> java code convention
==> Những thuật ngữ liên quan đến công nghệ java
==> XML and Java
==> Thinking in Java
==> Lập trình hướng đối tượng trong Java
==> Kỹ thuật lập trình Java căn bản
==> Visual basic ebook
==> Giáo trình lập trình Visual Basic.net
==> Giáo trình lập trình Visual Basic.net 2
==> Giáo trình VB
==> Giáo trình lập trình Hợp Ngữ - Assembly
==> Giáo trình Aptech - Quản Trị Mạng nâng cao
==> Kết nối 2 PC với nhau
==> Giáo trình IP Address
==> Biến máy tính thành Server
==> Giáo trình thực hành SQL
==> Hướng dẫn cài đặt SQL 2000
==> Luyện CCNA trên PC
==> Học Nhanh VB 6
==> Sử dụng và khai thác Visual Fox 6
==> Quản trị SQL 2000
==> Quản trị dữ liệu bằng Visual Fox 3
==> Giáo trình Lập trình Windows
==> Giáo trình lý thuyết và bài tập Pascal
==> Giáo trình lý thuyết và bài tập Foxpro
==> Giáo trình lý thuyết và bài tập Delphi
==> Giáo trình CSharp
==> Kỹ thuật lập trình
==> Giáo trình Pascal căn bản
==> Kỹ thuật lập trình nâng cao
==> Giáo trình Oracle
==> Giáo trình lập trình hướng đối tượng
==> Giáo trình lập trình Delphi
==> Giáo trình căn bản về lập trình game
==> Giáo trình Học XML tiếng viêt
==> Giáo trình Visual Basic 2005
==> Sổ tay lập trình
==> Tìm hiểu về lập trình COM
==> Giáo trình Kiến trúc máy tính
==> Qui trình khôi phục password router
==> Ngôn ngữ SQL
==> Giáo trình Linux tiếng việt
==> lập trình trên Pocket PC
==> Lập trình di động
==> Ngôn ngữ lập trình
==> kỹ thuật lập trình nâng cao
==> Tự học chuyên sâu Visual Basic.net trong 21 ngày
==> Kỹ thuật lập trình CSharp.net toàn tập
==> Kỹ thuật lập trình chuyên nghiệp Visual Basic.net tập 2
==> Kỹ thuật lập trình chuyên nghiệp Visual Basic.net tập 1
==> Tìm hiểu CSharp và ứng dụng
==> Tài liệu tham khảo C for Win
==> Programing with MFC application
==> Kỹ thuật lập trình CSharp 2.0
==> Giáo trình ngôn ngữ C
==> C Fast Food - Học nhanh C
==> Lập trình C for Win
==> Kỹ thuật lập trình ứng dụng CSharp.net toàn tập
==>
==> Tìm hiểu CSharp và ứng dụng
==> Từng bước học lập trình CSharp.net

Bộ Ebook về Đồ họa Photoshop


Bộ giáo trình Photoshop toàn tập 20 Chương

Các Sách Khác Về Photoshop


Bộ Ebook về Linux

Bộ Ebook về ứng dụng WEB

Trích dẫn:

==> 1001 cách làm web - blog - forum
==> Học Nhanh Dreamwave 9
==> Bluetooth Sercurity
==> Nhập môn HTML
==> Advanced PHP
==> Hướng dẫn cấu hình các tính năng cơ bản cho Router
==> Giáo trình Dreamwave 8
==> Internet toàn tập
==> Ebook hướng dẫn làm trang web nghe nhạc
==> Giáo trình học nhanh Flash 8
==> Giáo trình thiết kế Website
==> Lập trình web động với ASP tiếng việt
==> Học Javascipt
==> Giáo trình lập trình Web
==> Giáo trình Internet toàn tập cuốn 2
==> Javascipt căn bản cho người mới học
==> Hướng dẫn xây dựng website
==> Hướng dẫn làm Blog
==> Giáo trình lập trình mạng
==> Tìm hiểu mạng máy tính
==> Giáo trình Javascript nền tảng
==> Quản lý dự án CNTT
==> Sử dụng PHP và SQL thiết kế Web động
==> Giáo trình HTML lập trình Web
==> Rebuild Javascript
==> Ngôn ngữ SQL
==> Thiết kế trò chơi trong Flash
==> Nhập môn HTML
==> Sổ tay làm Forum
==> Một và lời khuyên thiết kế Web hiệu quả
==> Bộ template cho website
Bộ Ebook về ứng dụng Microsoft Office

Bộ Ebook Về ***** And Hack

__________________
RefLink: http://forums.congdongcviet.com/showthread.php?p=115211#post115211

[Hacking] Code spam,bom mai hoạt động good

Highslide JS


Tệp tin tải về
Bấm vào đây tải về

RefLink: http://vnitblog.com/blog/index.php

[Virus] Toàn quyền điều khiển máy tính - QTSS v 2-3(link mediafire mới)


Mấy hôm nay tìm hoài cuối cùng đc 1 mem trên VBF share cho
Tool này hay hơn Teamviewer RAT nhiều
Công dụng chắc ai cũng biết.Các bạn download tại đây: http://www.mediafire.com/?wyq4nyn2nzz (có cả v2 và v3)

RefLink: http://virusvn.com/forum/showthread.php?p=12818#post12818

1/23/10

[Virus] Tự phòng chống virus USB hiệu quả

Ng� y nay với sự phát triển ng� y c� ng mạnh mẽ của CNTT, các ứng dụng trong văn phòng được khai thác v� sử dụng có hiệu quả. USB ở th� nh thiết bị không thể thiếu cho mọi người, ngừoi sử dụng có thể sao chép, lưu trữ mọi lúc mọi nơi miễn la có máy tính. Nhưng bên cạnh đó, USB cũng trở th� nh phương tiện l� m lây nhiễm virus từ máy tính n� y sang máy tính khác. B� i viết dưới đây sẽ giúp các bạn khắc phục, hạn chế được phần n� o sự lay lang của virus qua USB.

1. Cơ chế lây lang của virus qua USB:

Khi cắm USB v� o một máy tính bị nhiễm virus, virus sẽ tự động sao chép chính bản thân nó v� xâm nhập v� o USB, Khi bạn cắm USB bị nhiễm virus v� o máy tính khác, v� mở USB n� y thì virus sẽ lợi dụng chế độ autoplay để lây lang sang máy tính. Kết quả l� máy tính của bạn cũng bị nhiệm virus.

2. Cách khắc phục

Để ngăn chặn việc việc lây lang của virus qua USB, người sử dụng có thể l� m theo v� i bước đơn giản sau:

+ Xác định tên ổ USB của bạn, chuyển đổi hệ thống file sang NTFS bằng cách v� o Start > Run, gõ convert [TÊN Ổ USB]/FS/NTFS , (VD: convert F:/FS/NTFS ). như hình dưới:

Lúc n� y bạn sẽ tự hỏi tại sao không để ở định dạng khác như FAST 32 chẳng hạn. Câu trả lời l� đinh dạng file ở dạng NTFS sẽ ít bị nhiễm virus hơn.

Chú ý: Nếu USB của bạn có tính năng ghi âm hay nghe nhạc MP3 thì bỏ qua bước n� y vì phần mềm chơi nhạc có thể không chạy được file MP3.

+ Virus có khả năng tự sao chép chính bản thân lên USB rồi tạo ra 1 file autorun.inf để kích hoạt tính năng autoplay của ổ đĩa, nó sẽ tự tạo thuộc tính ẩn cho mình để tránh bị phát hiện. Như thế thì tại sao ta không đánh lừa virus bằng cách tạ ra một file Autorun.inf, ta có thể ghi bất kỳ nội dung gì v� o đó hoặc để trống rồi lưu lại trên USB . Điều cần chú ý ở đây l� bạn phải đặt chế độ Readonly để không cho virus ghi đề lên file autorun.inf m� bạn vừa tạo ra.

Như vậy, nếu virus lây v� o USB của bạn cũng không thể lừa bạn qua tính năng autoplay hay tạo ra 1 file tautorun.inf v� ghi đè lên file autorun.inf m� bạn đã tạo ra.

Bạn cấm mọi truy xuất v� o file autorun.inf m� bạn tạo n� y bằng cách v� o Start > Run gõ cacls [TÊN Ổ USB]autorun.inf /D Everyone (VD: cacls F:autorun.inf /D Everyone).

Bạn cũng thường xuyên kiểm tra các file chạy ẩn bằng cách v� o My Computer > Tools > Folder Options > View > Chọn Show hidden files and folders v� bỏ Hide protected system files vì các virus thường đặt nó trong trạng thái ẩn. như hình dưới

Với v� i thao tác đơn giản trên bạn đã có thể ngăn được một số loại virus lây qua USB. Nhưng tốt nhất, bạn nên c� i cho máy mính một chương trình diệt virus đáng tin cậy v� có bản quyền.

Chúc các bạn th� nh công !

Thanh Long


RefLink: http://www.dienban.gov.vn/index.php?option=com_content&task=view&id=887&Itemid=64

[Virus] 5 bước tự phòng chống virus USB hiệu quả

Bạn có một chiếc USB? Cho dù bạn chỉ thỉnh thoảng sử dụng nó để sao chép tài liệu giữa các máy thì chắc rằng không dưới một lần chiếc USB của bạn đã nhiễm phải virus.

Có lẽ cũng không phải nói nhiều về những phiền toái mà bạn gặp với với những con virus đáng ghét này. Tuy nhiên bạn hoàn toàn có thể hạn chế những vị khách không mời này xâm nhập vào chiếc USB của bạn.

oUSB.jpg

Hãy thử click chuột phải vào biểu tượng ổ USB, nếu như bạn thấy có dòng Autoplay được tô đậm ở vị trí trên cùng, có nghĩa là 90% USB đó đã bị nhiễm virus. Bởi vì bình thường thì dòng chữ tô đậm ấy phải là Open hoặc Explorer thay vì Autoplay.

Virus lây qua USB đã trở nên quá phổ biến hiện nay tại Việt Nam, nhất là khi chiếc ổ di động USB đã trở thành vật bất ly thân của đại đa số học sinh, sinh viên, nhân viên văn phòng.. Những con virus này tự động xâm nhập khi bạn cắm USB của bạn vào một máy tính đã bị nhiễm virus.

Và mỗi khi bạn USB này được đưa vào một máy tính khác, virus lợi dung thói quen sơ hở của bạn mỗi khi click đúp vào biểu tượng ổ đĩa USB trong My Computer để xâm nhập. Tại đây chúng tiếp tục nhân bản và phát tán chính mình bằng nhiều đường. Và đương nhiên nạn nhân tiếp theo sẽ là những chiếc USB khác cắm vào máy.

Tại sao virus có thể lây nhiễm qua USB? Là bởi vì virus sao chép chính nó lên USB, và tạo một file Autorun.inf để kích hoạt tính năng Autoplay của ổ đĩa. Mỗi khi bạn click vào để mở USB thì bạn sẽ vô tình chạy chính con virus này. Thêm nữa, chúng khôn khéo đặt thuộc tính ẩn cho chính mình để tránh bị phát hiện.

Làm thế nào để có thể phát hiện ra được USB có virus hay không? Nếu như bình thường bạn mở USB bằng cách click chuột trái vào biểu tượng USB ở My Computer thì hãy thay đổi thói quen đó. Hãy thử click chuột phải vào biểu tượng ổ USB, nếu như bạn thấy có dòng Autoplay được tô đậm ở vị trí trên cùng, có nghĩa là 90% USB đó đã bị nhiễm virus. Bởi vì bình thường thì dòng chữ tô đậm ấy phải là Open hoặc Explorer thay vì Autoplay.

Điều này còn có thể áp dụng với các ổ đĩa cứng, một vài con virus sau khi lây vào máy còn lây vào Autoplay của các ổ cứng. Quá trình lây vào ổ cứng khiến cho virus vẫn có thể được kích hoạt mà không cần phải sao chép vào Start Up, một nơi vẫn thường xuyên được kiểm tra. Tuy nhiên, các virus USB thường tự đặt nó trong trạng thái ẩn, chính vì vậy tốt nhất bạn nên thường xuyên đặt chế độ xem các file ẩn bằng cách vào My Computer -> Tools -> Folder Options.. -> View -> Chọn Show hidden files and folders và bỏ Hide protected system files.

Tự bảo vệ mình như thế chưa đủ. Tốt nhất hãy bảo vệ USB của mình khỏi bị nhiễm virus. Bạn hoàn toàn có thể tự làm được ngay cả khi bạn không phải là một người am hiểu về máy tính.

Thật vậy, nếu như virus lây vào USB của bạn và tìm cách lừa bạn chạy nó qua tính năng Autoplay của USB thì tại sao bạn lại không thử lừa lại nó. Để ý rằng virus USB nào cũng tạo file autorun.inf, vậy thì bạn hãy tạo sẵn file autorun.inf trong USB của mình. Chắc chắn rằng chỉ với bước này bạn đã “qua mặt” được kha khá virus USB rồi.

Nhưng xem ra như thế vẫn chưa đủ, bạn cần phải cấm các con virus thông minh hơn ghi đè file này. Điều này bạn cũng hoàn toàn có thể làm được dễ dàng với USB nếu như bạn chuyển hệ thống file của USB sang NTFS và đặt quyền cấm ghi đè cho file autorun.inf.

Tất nhiên việc chuyển hệ thống files sang NTFS thì USB của bạn sẽ không thể dùng được trên Windows 98/ME, nhưng chắc rằng Windows 98/ME thì cũng không tự động nhận được USB của bạn, hơn nữa Windows 98/ME hiện nay cũng hơi hiếm thấy.

Khi bạn đã sẵn sàng, hãy bắt đầu bảo vệ USB của bạn qua những thao tác đơn giản với Windows XP qua 5 bước sau:

Bước 1: Xác định tên ổ đĩa USB của bạn là gì bằng cách click vào My Computer và xác định ổ USB. Ví dụ như USB của bạn là ổ E: và nhãn là STORAGE

Bước 2: Chuyển đổi hệ thống files sang NTFS bằng cách Click vào Start -> Run, sau đó gõ convert : /FS:NTFS. Ví dụ bạn sẽ phải gõ convert E: /FS:NTFS . Lưu ý, nếu ổ USB của bạn có chức năng ghi âm và nghe nhạc MP3 thì nên bỏ qua bước này. Nếu không, có thể phần mềm chơi nhạc của bạn sẽ không thể chạy các file MP3 được.

Bước 3: Tạo một file autorun.inf với nội dung bất kì, thậm chí để trống cũng được và copy vào thư mục gốc của ổ đĩa USB của bạn.

Bước 4: Click chuột phải vào file autorun.inf bạn vừa tạo và chọn thuộc tính cho file này là read-only, bạn cũng có thể chọn thêm hidden.

Bước 5: Cấm mọi quyền truy xuất vào file autorun.inf bạn vừa tạo bằng cách Click vào Start -> Run, sau đó gõ cacls autorun.inf /D Everyone. Ví dụ như bạn sẽ gõ cacls E:autorun.inf /D Everyone

Tất nhiên là không thể nói là an toàn với tất cả các loại virus USB, nhưng phương pháp này cũng phần nào giúp cho USB của bạn an toàn trước đại đa số chuyên lây qua USB hiện nay. Và hơn hết, hãy cài lên máy của mình một chương trình diệt virus đáng tin cậy, đặc biệt nên có tính năng tự động cập nhật thường xuyên. Chúc bạn thành công.

  • Hải Nam
Việt Báo (Theo_VietNamNet)

[Virus] Cách phòng chống virus lây lan qua USB

Nếu bạn bỏ thói quen bấm đúp chuột hay bấm phải chuột vào biểu tượng ổ USB, thiết lập cơ chế bỏ chạy tự động (Autorun), cho hiển thị tập tin ẩn và đuôi file... thì sẽ không bị nhiễm virus lây trên thiết bị phổ thông này.

1. Cho hiển thị file ẩn và đuôi file

Trước khi cắm ổ USB bất kỳ vào máy, bạn hãy mởWindows Explorer. Ở menu Tools > tìm dòng Folder Options. Nếu khôngcó mục này thì nghĩa là máy của bạn đang hoặc từng bị virus và bạn cầndùng những chương trình diệt virus mới nhất để diệt cho sạch sẽ, và ápdụng các giải pháp khắc phục tác hại của virus lây qua USB

Trong hộp thoại Folder Options vừa mở ra, bạn nhấnvào tab View, tìm các dòng sau và bấm/ huỷ bấm dấu kiểm của những dòngtương ứng:


Show hidden files and folders (bấm chọn nút radio)
Bỏ dấu kiểm Hide extensions for know file types
Bỏ dấu kiểm Hide protected operating system files (Recommended)

Mục đích của thao tác này là để hiển thị virus cốtình giấu mặt trong ổ USB bằng cách tự đặt cho nó thuộc tính "ẩn"(Hidden và System), và hiển thị những virus giả danh (có biểu tượnggiống file word hay giống biểu tượng folder, nhưng thực ra nó là filethực thi *.EXE) để khỏi vô tình bấm nhầm khiến nó hoạt động.

Nếu bạn không cho hiển thị đuôi file thì bạn sẽ khôngthể phân biệt được đâu là tài liệu thật, đâu là virus vì chúng đều cótên giống nhau, biểu tượng (icon) giống nhau, và chỉ khác nhau duy nhấtphần đuôi (mở rộng) file (*.EXE và *.DOC chẳng hạn). Trong khi đó, để"tiện dụng" theo mặc định của Microsoft, phần đuôi file này không đượchiển thị nên người dùng rất dễ nhầm lẫn.

Khi thấy file EXE có biểu tượng giống Word, giống Folder và có tên file giống tài liệu của bạn thì hãy xoá thẳng tay và không được bấm đúp vào đó để xem.

2. Bỏ thói quen bấm đúp chuột trái và bấm chuột phải

Đa số người dùng đều có thói quen cắm ổ USB vào máy,mở Explorer nhấn đúp chuột trái vào biểu tượng ổ USB trong My Computerđể mở.

Nhưng rất nhiều virus có đặc tính tạo ra một file"Autorun.inf" ở ngay bên ngoài ổ USB, có thể ẩn hoặc không. File này vềbản chất không xấu, nó được Windows cho tự động chạy một phần mềm quyđịnh trong nội dung của file "Autorun" để tạo ra sự thuận tiện chongười dùng. Virus lại lợi dụng file đó để tự động kích hoạt nên nếuthấy sự xuất hiện của file đó trên ổ USB hoặc bên ngoài cùng ổ cứng(C:\; D:\; E:\) nghĩa là ổ USB hoặc máy tính của bạn đã có virus.

Kể cả bạn đã thận trọng bấm chuột phải vào biểu tượngổ USB và chọn Explorer hoặc bất kỳ một mục gì khác để mở ổ USB từ menubật ra, bạn vẫn bị virus. Bởi virus đã chỉnh sửa file Autorun.inf, vàthông qua đó đã chỉnh sửa luôn cả menu bật ra khi bạn bấm chuột phải đểkhi người dùng chọn Explorer, virus vẫn được kích hoạt.

Do đó, hãy mở cửa sổ My computer bằng cách bấm nút Windows-E,và bấm đơn (một lần trên chuột trái) vào hình ổ USB ở bên trái trongcây thư mục (Folder tree). Hoặc bấm vào nút sổ xuống (drop-down) củaAddress bar, và chọn ổ USB trong danh sách ổ đĩa xổ xuống đó. Bạn vẫnmở được ổ USB ngay cả khi USB có virus, còn virus thì không thể vàođược máy nếu bạn thận trọng làm như vậy.

3. Vô hiệu hoá tính năng Autorun

Mặc dù đã "cảnh giác" để mở USB như mục 2, nhưng đôi khi người dùng vẫn cứ nhầm lẫn. Vì vậy, tốt hơn hết là vô hiệu hóa Autorun bằng cách sau:

Tạo một giá trị DWORD với tên “NoDriveTypeAutorun” tại khóa HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\policies\Explorer của registry rồi đặt giá trị theo bảng dưới đây.
Hệ 16Hệ 10Ý nghĩa0 x 11Vô hiệu hóa Autorun của các ổ đĩa chưa biết kiểu0 x 44Vô hiệu hóa Autorun của các ổ đĩa tháo lắp được0 x 88Vô hiệu hóa Autorun của các ổ đĩa cố định0 x 1016Vô hiệu hóa Autorun của các ổ đĩa mạng0 x 2032Vô hiệu hóa Autorun của các ổ đĩa CD-ROM0 x 4064Vô hiệu hóa Autorun của các đĩa RAM0 x 80128Vô hiệu hóa Autorun của các ổ đĩa chưa biết kiểu0 x FF255Vô hiệu hóa Autorun của các ổ đĩa

Theo đó, nếu muốn vô hiệu hóatính năng Autorun của tất cả các ổ đĩa trừ đĩa CD ROM, bạn tính1+4+8+16+64+128 = 221 (bỏ giá trị 32 cho CD ROM), đổi ra hệ cơ số 16được DD (sử dụng Calculator của Windows) rồi nhập giá trị DD cho“NoDriveTypeAutorun”. Để vô hiệu hóa tính năng Autorun của tất cả mọiloại đĩa, bạn nhập FF. Sau đó khởi động lại máy để thay đổi có hiệu lực.

4. Dùng menu Open

Người dùng nên mở phần mềm ra trước rồi gọi tập tin ra sau.

Điều đơn giản và an toàn nhất là để mở một file tàiliệu bất kỳ (Word, Excel, Access, AutoCAD...) hãy mở phần mềm ra trước,rồi bấm nút menu File/ Open để mở tài liệu vì mọi phần mềm đều có chếđộ lọc bỏ những file không phải là tài liệu chính thức của nó.

Đừng tiện lợi hoá bằng cách trông thấy tài liệu là ngay lập tức bấm đúp chuột để mở.

RefLink: http://forum.anhtrang.org/cach-phong-chong-virus-lay-lan-qua-usb-t1787.html/page__s__6f2b0a10a06ec2aa5fb5b557b8556bfc

[Virus] Phòng chống virus autorun lây qua USB

Loại virus autorun lây qua USB đã trở nên quá phổ biến. cơ chế hoạt động của loại virus này là: tạo 1 file autorun.inf ở thư mục gốc của USB và 1 file thực thi của virus. file autorun.inf có nhiệm vụ kích hoạt virus khi USB được cắm vào máy tính.
hình minh họa USB có virus autorun:


Hiện nay, có nhiều tool để chống lại loại virus này như: usb disk security, panda usb and autorun vacine, autorun remover...nhưng tất cả chỉ có thể loại bỏ được file autorun.inf - loại bỏ điều kiện cần để kích hoạt virus loại này.
ngoài các tool trên ra, có một số phương pháp khác để phòng chống loại virus này: như tạo file autorun.inf giả, tạo folder autorun.inf, dùng tính năng security với NTFS...nhưng cũng không hiệu quả cho lắm và quan trọng nhất là vẫn chỉ loại bỏ file autorun.inf của virus (dù chưa hiệu quả lắm).
các phương pháp trên mà gặp phải những người dùng máy tính bình thường - với họ, dùng máy tình = việc duoble click thì cũng coi như bỏ.
qua quá trình dùng máy tính và tiếp xúc với loại virus này, tôi thấy có thể dùng policy của windows để phòng chống loại virus này.
đầu tiên ta vào control panel -> administrative tool -> local security policy.
click phải vào: software restriction polices chọn creat new polices
windows sẽ tạo thêm 2 mục : security level và additional rules. click phải vào additional rules chọn new path rules:
khi tạo policy mới thì mặc dịnh sẽ là disallowed. giờ tạo policy không cho phép thực thi file autorun.inf ở thư mực gốc của mọi ổ đĩa (kể cả USB cho chắc ăn ).
bây giờ tạo policy riêng cho USB. giả sử máy tính có các ổ đĩa: C,D, E (ổ CD) và có vài cổng USB. khi đó nếu cắm USB vào thì ổ này sẽ là F,G,H...ví dụ tạo policy cho 1 ổ sẽ là F( G,H làm tương tự). Như đã nói, virus autorun có 1 flie thực thi có phần mở rộng dạng: exe, com, bat, cmd, scr, vbs...giờ tạo policy không cho phép thực thi file dạng này ở thư mục góc của USB nữa:
hình trên ví dụ USB là ổ F và cấm file .exe, còn với ổ G,H...và file dạng com, bat, cmd, vbs...làm tương tự.
1 chú ý nho nhỏ nữa là: có 1 số virus còn tạo 1 folder ẩn và núp trong đó như folder : recycle (conficker khét tiếng năm 2009 cũng núp trong này với file *.VMX), hay folder restore...vậy cần tạo thêm policy nữa cấm tất cả file trong các folder này luôn:

vậy là đã xong.
cách này có ưu điểm là cấm luôn cả file thực thi của virus chứ không chỉ dừng lại ở việc loại bỏ file autorun.inf. hơn nữa chỉ dùng chính những phương tiện có sẵn của windows. Với phương pháp này, người dùng khi duoble click vào file hoặc folder "bị cấm" đó (như virus new folder.exe chẳng hạn) thì bị deny ngay.
chú ý là policy này nó không trừ ai ra, kể cả ông admin mà người dùng đang dùng để tạo policy.

lời quê chắp nhặt.....mong các bậc tiền bối, hảo hớn, ....nhặt sạn giúp.

RefLink: http://virusvn.com/forum/showthread.php?p=12814#post12814

[Virus] Phòng chống virus Autorun lây lan từ USB một cách toàn diện nhất

Như các bạn đã biết, các thiết bị lưu trữ như USB, thẻ nhớ, đĩa CD/DVD, các ổ đĩa ánh xạ mạng (Map Network Drive) và các ổ đĩa trong máy tính (Logical Drive) đều có cơ chế Autorun, cơ chế này có ích khi muốn tự động bật lên chương trình giới thiệu, lời chào, trình cài đặt tự động ... khi gắn các thiết bị này vào máy tính. Nhưng cơ chế này lại tiềm ẩn một lỗi bảo mật hết sức nguy hiểm được biết đến như loại virus Autoplay lây lan rất nhanh qua các thiết bị lưu trữ.

Autorun có 2 cơ chế:
1. Autorun khi mới cắm/gắn các thiết bị vào: ví dụ: chèn đĩa CD học tiếng anh vào thì tự động bật lên các menu mặc dù ta không thực hiện thao tác nào cả
2. Autorun thực thi khi nhấp đúp vào các ổ đĩa. Ví dụ: tương tự cơ chế 1, nhưng chỉ thực thi khi nhấp đúp vào ổ đĩa.

Và các loại virus Autorun đã lợi dụng cơ chế này để lây lan khi ta mới cắm/gắn các thiết bị lưu trữ vào máy tính. Nếu cơ chế 1 bị vô hiệu hóa (Ấn giữ SHIFT ngay khi cắm, bật Turn off Autorun trong Gpedit.msc) thì virus sẽ phát tán khi ta nhấp đúp (cơ chế 2).

Giải pháp:
Cơ chế 1 có thể được tắt bằng cách nhấn giữ SHIFT khi cắm các thiết bị, hoặc tắt hẳn bằng cách vào Start > RUN: gõ lệnh Gpedit.msc
Tại cửa sổ Group Policy Editor, bạn mở rộng nhánh User Configuration > Administrative Templates > System
Nhấp đúp vào khóa Turn off Autorplay > chọn Enable > chọn All Drives > OK
Vào RUN: gõ lệnh gpupdate /force để cập nhật thiết lập.

Để ngăn chặn virus Autorun một cách triệt để, Microsoft đã đưa bản hotfix tắt hẳn Autorun cơ chế 2
Bạn chọn đúng phiên bản hệ điều hành rồi tải về bản hotfix :
Update for Windows XP (KB967715)
Update for Windows XP x64 Edition (KB967715)

Tải xong bạn cài đặt, cuối cùng bấm Finish để khởi động lại máy tính.

Từ nay bạn đã có thể yêu tâm rằng Virus không thể tự lây lan khi cắm USB hoặc nhấp đúp vào các ổ đĩa nữa, vấn đề còn lại là bạn phải tự nhận biết đâu là file virus để đứng nhấp vào kẻo vô tình kích hoạt nó mà thôi. Cho dù có virus trong USB nhưng khi nó chưa được kích hoạt thì bạn có thể bôi đen vào xóa nó đi.

Dĩ nhiên ở trên chỉ là cách phòng triệt để, còn vì một lý do khách quan nào đó bạn vẫn có thể bị nhiễm virus, vì vậy hãy cài đặt cho máy tính phần mềm diệt virus đáng tin cậy để chống bạn nhé.

Chúc bạn thành công.

RefLink: http://duyhieucomputer.com/blog/phong-chong-virus-autorun-mot-cach-toan-dien-nhat/

[Virus] Phòng chống Virus lây lan qua USB Flash Drive

Hiện nay khi cắm USB Flash Drive (ổ USB) vào máy tính thì có đến 90% bị nhiễm virus (tạm gọi là virus USB), điều này đã gây nên nhiu tn tht ln. Thc tế, cách thc tn công cht phác ca các virus này không đáng gây nên nhng tn tht như vy, vn đ cơ bn là ý thc ngây thơ ca người dùng là điu kin dung túng cho virus phát tán.

Virus phát tán qua USB như thế nào?

Cơ chế thứ nhất - Autorun (tự chạy)

Nếu bạn đã từng đẩy một đĩa CD vào khay và chờ 1 chút, 1 chương trình cài đặt hiện lên, mọi thứ bắt đầu. Nếu tinh ý bạn sẽ thấy là có một cơ chế tự động (Autorun) đằng sau đó, và chắc chắn ít nhiều đã có một chương trình nào đó được thực thi. Chuyện gì xảy ra nếu chương trình vừa chạy này là một chương trình xấu, chứa những dòng mã hiểm độc nhằm hủy hoại máy tính của bạn?.

Cũng tương tự như ổ CD-ROM của bạn, tất cả các ổ đĩa khác bao gồm đĩa cứng, đĩa mềm và USB Flash Drive, đều có thể ẩn chứa khả năng Autorun này. Cũng không thể nói rằng Autorun là một tính năng xấu, nhưng đây là một lỗ hổng cho những kẻ cơ hội khai thác và cũng là cơ chế lây lan cơ bản của hầu hết các virus USB. Bạn sẽ phải dè chừng nó.

Cơ chế thứ hai - Fake Icon (giả biểu tượng)

Virus máy tính do con người viết nên và nó có tính chất tự nhân bản, để hoạt động được đòi hỏi phải có môi trường và những điều kiện cụ thể (trong trường hợp trên thì cơ chế Autorun đã thực thi virus). Còn trường hợp phổ biến thứ hai, một “con” virus (dưới dạng một file .exe) giả dạng làm một thư mục hay file quen thuộc của bạn. Virus ngụy trang bằng cách mang trong mình icon của folder/file y hệt như icon thật, điều đó làm bạn dễ nhầm lẫn double click vào icon này. Sau khi bạn click, chẳng có thư mục hay file nào được mở ra cả, tất cả những gì bạn làm là đã thực thi 1 file .exe - vậy là virus đã được kích hoạt, máy của bạn bị nhiễm virus!.

Cách Phòng Chống virus USB

Các động tác cơ bản

Trước khi bắt đầu với đám virus USB, chúng ta nên có một số thao tác đón đầu trước để sau đó làm việc dễ dàng hơn:

Image
Thay đổi một số thuộc tính cơ bản

- Vào My Computer, chọn menu Tool > Folder Options…

- Trong cửa sổ Folder Options chọn tab View, cuộn thanh cuộn xuống 1 chút và cấu hình như sau:

- Chọn Show hidden files and folders để hiển thị các file ẩn (hidden file), bởi vì lẽ dĩ nhiên các virus tự ẩn mình đi.

- Bỏ chọn Hide extensions for known file types để hiển thị đuôi (vd *.exe *.doc *.txt…) cho tất cả các file.

- Bỏ chọn Hide protected operating system files để hiển thị những file hệ thống quan trọng. Bạn sẽ thấy là mục này được ghi chú là Recommended, tức là khuyến cáo nên để ẩn chứ không nên cho hiện hết ra. Cũng đúng thôi, vì sau khi chọn mục này, bạn sẽ thấy xuất hiện nhiều file và thư mục hệ thống lờ mờ trên khắp các ổ cứng của mình, nếu không may xóa phải các file này thì rất có thể máy của bạn sẽ gặp rắc rối lớn. Tuy nhiên các virus cũng tự ngụy trang mình bằng cách khoác lên mình chiếc “áo” làm file hệ thống, để nhìn thấy chúng bạn phải bỏ chọn mục này. Nếu ổ USB có virus thì thực hiện như hình 4 để xóa các file nguy hiểm. Nhớ: không xóa bất kỳ file nào loại này mà bạn chưa chắc chắn là virus.

Cách chng virus USB lây sang máy tính

1. Tt chc năng Autorun ca Windows: vào Start->Run->Gõ gpedit.msc-> OK.

  • Ở List bên trái chọn Computer Configuration -> Administrative Template -> System

  • Ở List Setting bên phải tìm đến mục Turn off Autoplay và kích chuột phải chọn Properties

  • Tại table Setting chọn Enable, tại mục Turn off Autoplay on: chọn All Drivers -> OK

  • Làm tương tự với mục User Configuration ->

2. Không cho virus tạo file Autorun.inf trong ổ đĩa (cả ổ cứng và ổ USB):
Có thể có nhiều cách chống được loại virus này. Tuy nhiên, cách đơn giản mà không cần công cụ gì giúp ổ cứng của bạn hạn chế bị virus USB tấn công và phát tán là tạo một file Autorun.inf (không có nội dung gì) trong thư mục gốc của ổ đĩa, không phân quyền cho bất kỳ user nào có thể thay đổi file đó để virus không tạo được file Autorun nữa. Cách làm như sau:

- Ổ cứng của bạn phải được định dạng theo NTFS (Nếu là FAT32 thì không phân quyền cho file được)
- Mở Explorer rồi vào menu Tools \ Folder Options \ View, kéo xuống dưới rồi bỏ chọn mục Use simple file sharing --> OK
- Tạo một file Autorun.inf (không có nội dung), Click chuột phải chọn Properties \ Security \ Advanced, tại bảng Permissions hãy Remove hết tất cả các user có trong danh sách rồi chọn OK --> Yes, trở về mục Security sẽ thấy danh sách các user trống rỗng là được, sau đó chọn OK.

Sau khi thao tác như trên, nếu không xóa được file Autorun.inf là bạn đã làm đúng.
Với những gì đã làm kết hợp với việc thực hiện "Các bước truy xuất ổ đĩa an toàn" như hình vẽ ở dưới thì bạn không lo bị nhiễm virus USB nữa.
Cuối cùng là bạn phải Restart lại máy để bước 1 có hiệu lực, cách này không hẳn là phòng chống được virus USB 100%, nhưng cũng hạn chế tối đa được loại virus lây qua ổ USB này.

* Cách Convert ổ đĩa từ FAT sang NTFS: Chọn Start -> Run -> gõ lệnh cmd -> OK. Tại cửa sổ lệnh bạn gõ lệnh để convert theo cú pháp: CONVERT volume /FS:NTFS. Ví dụ muốn convert ổ F, bạn gõ lệnh như sau:

Convert f: /FS:NTFS

Một số lưu ý:

- Dấu hiệu nhận biết khả năng ổ đĩa bị nhiễm virus USB (kích chuột phải vào biểu tượng ổ đĩa)

Image
Hình 1. Bình thường

Image
Hình 2. Bị nhiễm

Image
Hình 3. Bị nhiễm

Nếu kích đúp chuột vào biểu tượng ổ đĩa thì: Hình 1, 99% sẽ mở ra thư mục gốc. Hình 2 và 3 (ổ đã bị nhiễm virus USB), 100% sẽ kích hoạt nội dung các câu lệnh trong file Autorun.inf

- Cách truy cập ổ đĩa nhằm khống chế sự kích hoạt file Autorun.inf

Vào My Computer, nhấn vào biểu tượng Folders sẽ thấy xuất hiện List các Folders bên trái, muốn mở ổ đĩa nào chỉ cần bấm chuột vào biểu tượng ổ đĩa đó. Ở cửa sổ phải sẽ xuất hiện các file và thư mục trong ổ đĩa, lúc này bạn có thể truy cập vào các file và thư mục mà không sợ kích hoạt file Autorun.inf

Image
Các bước truy xuất ổ đĩa an toàn

Cách chống Fake Icon

Mỗi chương trình, mỗi loại file mang trên mình một biểu tượng. Lợi dụng điều này mà các loại virus USB mạo danh để hòng lừa gạt người dùng kích hoạt chúng. Vấn đề là nếu một chương trình virus mang icon của một folder/file khác, thật khó phân biệt và người dùng dễ nhầm lẫn double click thực thi chương trình này. Mặc định, Windows giấu đi phần đuôi của những chương trình, file đã biết. Vd: file STARTUP.exe được hiển thị trong My Computer chỉ còn là STARTUP. Nếu file này mang icon của một thư mục, thật khó phân biệt. Chẳng hạn như ở hình dưới, bạn cứ ngỡ STARTUP là một thư mục:
Image
Phân biệt cơ chế Fake Icon của virus

Nhưng nếu bạn cho hiện hết đuôi các file ra (xem lại Các động tác cơ bản), thì các file này “lòi đuôi” ra ngay là file thực thi.

Bạn cũng có thể xem file ở dạng Details (chọn menu Views > Details), lúc này hãy chú ý đến sự khác biệt giữa một thư mục (folder) và ứng dụng (application):

- Ở cột Type, ứng dụng được gọi là Application còn thư mục là File Folder.

- Ở cột Size, ứng dụng có size còn thư mục thì không.

Cần lưu ý, các virus còn giả danh các file thường dùng, như file text (.txt), file word document (.doc), file ảnh (.jpg) v.v.

Như vậy, để kiểm tra xem USB Drive có nhiễm virus loại này không, bạn có thể truy cập vào USB, bật chế độ hiện hết các đuôi file và chú ý đến các đuôi .exe. Hoặc cũng có thể view ở chế độ details và chú ý đến các Application. Nếu gặp các virus loại này? Hãy xóa thẳng tay.

Bây giờ bạn thử dạo qua một vòng ổ cứng của mình và một vài thư mục con để kiểm tra xem máy đã bị nhiễm virus loại này chưa.

ChuyênTT
(Tổng hợp)
RefLink: http://www.humg.edu.vn/cntt/ho-tro-ky-thuat/125-phong-chong-virus-lay-lan-qua-usb-flash-drive

[Crypto] RSA căn bản

Tài liệu này DungCoi chôm từ thằng bạn cùng phòng mới làm báo cáo. Tên bạn ấy là : Nguyễn Minh Thào, SV năm 3, Đại học Công nghệ Thông tin Hồ Chí Minh.
Đây là bài báo cáo cuối kỳ 1 môn của Thào.
Mình chỉ xin ghi vài dòng để ghi nhận tài liệu này của cậu ấy, còn trong bản gốc không có cái trang này :”> Tóm nội dung báo cáo

Download: http://www.mediafire.com/?jowmm12mmgy

I. Giới thiệu
II. Hệ mã hóa công khai
III. Chuẩn bị toán học
IV. Hệ mã hóa công khai RSA
1. Giới thiệu
2. Cách tạo khóa
3. Mã hóa
4. Giải mã
5. Tính bảo mật
6. Quá trình tạo khóa
7. Tốc độ
8. Các cách xâm nhập
V. Chữ kí điện tử
VI. Chương trình cài đặt thuật toán
VII. Nhận xét đánh giá
VIII. Tài liệu tham khảo

RefLink: http://virusvn.com/forum/showthread.php?p=12812#post12812

[MASM] Enum Processes (Part 1)

Author: Benina

Download: [Source]


Tuts này tôi chỉ tổng kết một số cách liệt kê processes đang thực thi hiện hành trong Windows. Mục đích chính cũng là để tôi lưu trữ vì vậy các đoạn code trong tuts này không chuẩn mực (ko có kiểm tra lỗi xảy ra bằng cách dùng hàm GetLastError), có nhiều điểm cần phải bổ sung. Nhưng dù sao đi nữa nó cũng có ích phần nào cho các bạn nghiên cứu lập trình masm.

Tôi thực hành trên Windows XP SP2. Trên các Windows khác code có thể ko thực thi.

1.Phương pháp 1: Using Process Status Helper Library

Đầu tiên ta dùng hàm EnumProcesses để liệt kê các PIDs (chỉ mục process) các processes đang running trong system. Giá trị trả về của hàm là một con trỏ đến mảng array dword chứa các PIDs (tham số pProcessIDs) và tổng số bytes chứa mảng array trả về (tham số pBytesReturned).

Sau đó ta dùng một vòng lặp duyệt qua từng thành phần trong mảng array dword, tức là duyệt qua từng PID trong array để đọc tên processes.

Muốn đọc được name process ta phải dùng một loạt các hàm APIs như sau:

-Mở process bằng hàm OpenProcess với flag là PROCESS_QUERY_INFORMATION or PROCESS_VM_READ. Với flag như vậy chúng ta mới truy vấn được thông tin của processes.

-Liệt kê Modules của process vừa mở bằng hàm EnumProcessModules. Hàm này sẽ trả về một mảng array chứa tên các modules (ascii) và tổng số bytes chứa mảng array đó.

-Sau đó ta dùng hàm GetModuleBaseName để đọc tên base name module. Tức là tên module thực thi process.

-Cuối cùng ta nhớ CloseHandle process mở trước đó

Sau đây là một số bước thực hiện tóm tắt:

Bước 1: Liệt kê các PIDs bằng cách dùng hàm EnumProcesses

Hàm EnumProcesses nhận các PIDs của các processes trong system.

Syntax

C++

BOOL WINAPI EnumProcesses(

__out DWORD *pProcessIds,

__in DWORD cb,

__out DWORD *pBytesReturned

);

Parameters

pProcessIds [out]

Con trỏ trỏ đến một array nhận danh sách các chỉ mục process (list of process identifiers).

cb [in]

Kích thước (bytes) của mãng pProcessIds array.

pBytesReturned [out]

Số bytes trả về trong pProcessIds array.

Return Value

Nếu hàm thành công thì giá trị trả về là nonzero.

Nếu hàm sai, giá trị trả về là zero. Để lấy thông tin lỗi, call GetLastError.

Bước 2a: Dùng hàm OpenProcess mở process để ta truy vấn thông tin từ nó

Mở process bằng hàm OpenProcess với flag là PROCESS_QUERY_INFORMATION or PROCESS_VM_READ. Với flag như vậy chúng ta mới truy vấn được thông tin của processes.

Bước 2b:Dùng hàm EnumProcessModules để liệt kê các modules trong process được mở trước đó

Gọi hàm EnumProcessModules để nhận một handle cho mỗi module trong process được chỉ định.

Syntax

C++

BOOL WINAPI EnumProcessModules(

__in HANDLE hProcess,

__out HMODULE *lphModule,

__in DWORD cb,

__out LPDWORD lpcbNeeded

);

Parameters

hProcess [in]

handle của process cần liệt kê các modules.

lphModule [out]

Một array nhận danh sách các module handles.

cb [in]

size of lphModule array, đơn vị bytes.

lpcbNeeded [out]

số bytes cần thiết để chứa tất cả các module handles trong lphModule array.

Return Value

Nếu hàm thành công trả về giá trị nonzero.

Nếu hàm fails, return value zero. To get extended error information, call GetLastError.

Bước 3:Dùng hàm GetModuleBaseName để lấy addr chứa name của module

GetModuleBaseName Function

Nhận địa chỉ đầu tiên chứa name of module được chỉ định.

Syntax

C++

DWORD WINAPI GetModuleBaseName(

__in HANDLE hProcess,

__in_opt HMODULE hModule,

__out LPTSTR lpBaseName,

__in DWORD nSize

);

Parameters

hProcess [in]

handle của process chứa module.

handle phải có quyền truy xuất PROCESS_QUERY_INFORMATION PROCESS_VM_READ. Để có nhiều thông tin hơn, hảy xem chủ đề Process Security and Access Rights.

hModule [in, optional]

handle của module. Nếu tham số này là NULL, hàm này trả về name of file được sử dụng để cài đặt process đang calling.

lpBaseName [out]

Con trỏ đến buffer nhận base name of module. Nếu base name lớn hơn maximum number of characters được chỉ định bởi tham số nSize parameter, base name sẽ bị cắt bỏ.

nSize [in]

size of lpBaseName buffer, đơn vị characters.

Return Value

Nếu hàm thành công, giá trị trả về chỉ định chiều dài length of string được copy đến buffer, in characters.

Nếu hàm sai, return value zero. Để biết thông tin lỗi xảy ra, call GetLastError.

Thực hành:

-Tạo project Dialog

-Trong rc tạo Listview, với Type là Report

push esi

push edi

lea eax,buffer

mov pbuf,eax

invoke EnumProcesses,pbuf,4096,ADDR breq

shr breq, 2 ; get process count

mov esi, pbuf

mov edi, breq

.while edi>0

push esi

push edi

mov eax,dword ptr [esi]

mov pid,eax

invoke OpenProcess,PROCESS_QUERY_INFORMATION \

or PROCESS_VM_READ,FALSE,eax

mov hProcess,eax

.if hProcess != 0

invoke EnumProcessModules,hProcess,ADDR hMod,\

4,ADDR cbNeeded

.if eax!=0

invoke GetModuleBaseName,hProcess,hMod,\

addr buf2,260

.if eax==0

invoke lstrcpy,addr buf2,chr$("System0")

.endif

.elseif

invoke lstrcpy,addr buf2,chr$("System1")

.endif

.elseif

invoke lstrcpy,addr buf2,chr$("System2")

.endif

;add to Item of listview

invoke wsprintf,addr buf3, addr template,pid

lea eax,buf2

mov lvi.imask, LVIF_TEXT

mov lvi.iItem,0

mov lvi.iSubItem,0

mov lvi.pszText, eax

invoke SendMessage, hList, LVM_INSERTITEM,\

0, ADDR lvi

;add to SubItem of Item

lea eax,buf3

mov lvi.imask, LVIF_TEXT inc lvi.iSubItem

mov lvi.pszText,eax

invoke SendMessage, hList, LVM_SETITEM, \

0, ADDR lvi

invoke RtlZeroMemory,addr buf2,260

invoke RtlZeroMemory,addr buf3,260

invoke CloseHandle,hProcess

pop edi

pop esi

add esi, 4

sub edi, 1

.endw

pop edi

pop esi

invoke MessageBox,0,chr$("Method 1"),chr$("Method"),MB_OK

2.Phương pháp 2: Using the ZwQuerySystemInformation function

Dùng hàm ZwQuerySystemInformation để liệt kê processes:

Hàm này nhận các thông tin đặc biệt của hệ thống.

Hàm này là hàm được export bởi thư viện ntdll.dll, vì vậy muốn sử dụng chúng ta phải GetProcAddress địa chỉ hàm này.

mov ZwQuerySystemInformation, FUNC(GetProcAddress,FUNC(GetModuleHandle,chr$("ntdll.dll")),CTXT("ZwQuerySystemInformation"))

Mô tả hàm ZwQuerySystemInformation:

NTSTATUS WINAPI ZwQuerySystemInformation(

__in SYSTEM_INFORMATION_CLASS SystemInformationClass,

__inout PVOID SystemInformation,

__in ULONG SystemInformationLength,

__out_opt PULONG ReturnLength

);

SystemInformationClass [in] : tham số này chỉ định loại thông tin cần nhận được khi gọi hàm này. Vì ở đây chúng ta cần biết thông tin về các processes và threads của chúng nên chúng ta dùng tham số có giá trị sau để chỉ định loại thông tin cần lấy:

SystemProcessesAndThreadsInformation equ 5

SystemInformation [in, out] : là con trỏ trỏ đến buffer nhận thông tin theo yêu cầu. Kích thước và cấu trúc của thông tin này thay đổi dựa trên giá trị của tham số SystemInformationClass. Vì thông tin cần lấy là process nên cấu trúc nhận được sẽ như sau:

SYSTEM_PROCESS_INFORMATION struct

NextEntryDelta dd ?

ThreadCount dd ?

Reserved1 dd 6 dup (?)

CreateTime dq ?

UserTime dq ?

KernelTime dq ?

ProcessName UNICODE_STRING

BasePriority dd ?

ProcessId dd ?

InheritedFromProcessId dd ?

HandleCount dd ?

Reserved2 dd 2 dup (?)

VmCounters VM_COUNTERS

IoCounters IO_COUNTERS

Threads SYSTEM_THREAD_INFORMATION

SYSTEM_PROCESS_INFORMATION ends

Chú thích các thành phần trong cấu trúc này:

# NextEntryOffset

Offset from begining of output buffer to next process entry. On last entry contains zero.

# NumberOfThreads

Number of process'es threads. Also number of members in Threads array descripted below.

# Reserved[3]

Reserved.

# CreateTime

Process creation time, in 100-ns units.

# UserTime

Effective time in User Mode.

# KernelTime

Effective time in Kernel Mode.

# ImageName

Process name, based on executable file name.

# BasePriority

Process base priority.

# ProcessId

Unique identifier of process.

# InheritedFromProcessId

Creator's identifier.

# HandleCount

Nr of open HANDLEs.

# Reserved2[2]

Reserved.

# PrivatePageCount

Number of memory pages assigned to process.

# VirtualMemoryCounters

Memory performance counters.

# IoCounters

IO performance counters.

# Threads[0]

Array of SYSTEM_THREAD structures descripting process's threads.

Chú ý:

-Chúng ta phải khai báo con trỏ này là một biến trên Heap thì hàm mới thực hiện được. Nếu dùng biến toàn cục thì hàm sẽ trả về sai.

LOCAL SystemInformation:DWORD

-Con trỏ này cũng có thể dùng con trỏ được cấp phát bằng lệnh VirtualAlloc

SystemInformationLength [in] : Kích thước bytes của buffer được trỏ đến bởi tham số SystemInformation.

ReturnLength [out, optional] : Là con trỏ đến vị trí mà ở đó hàm viết ra kích thước thật sự của thông tin yệu cầu. Nếu kích thước lớn hơn hoặc bằng tham số SystemInformationLength thì hàm sẽ copy thông tin vào trong SystemInformation buffer. Nếu khác, thì hàm sẽ trả về NTSTATUS error code và trả về kích thước của buffer cần thiết trong ReturnLength mà thông tin yêu cầu cần.

Chú ý: Con trỏ tham số này cũng phải khai báo là một biến trong Heap:

LOCAL cb_x : DWORD

-Vậy đầu tiên chúng ta không thể biết thông tin chúng ta cần bao nhiêu bytes đế chứa, do đó chúng ta sẽ gọi hàm ZwQuerySystemInformation với kích thước buffer chỉ 4byte để hàm bị sai và trả về kích thước thật thụ thông tin muốn lấy trong tham số ReturnLength. Sau đó chúng ta sẽ cấp phát mới (dùng hàm VirtualAlloc ) một vùng nhớ có kích thước bằng với ReturnLength. Cuối cùng chúng ta sẽ gọi lại hàm ZwQuerySystemInformation với các tham số phù hợp.

lea eax,cb_x

push eax

push 4

lea eax,SystemInformation

push eax

push SystemProcessesAndThreadsInformation

call [ZwQuerySystemInformation]

mov SystemInformation, FUNC(VirtualAlloc,NULL,\

[cb_x],MEM_COMMIT,PAGE_READWRITE)

push NULL

push [cb_x]

push eax

push SystemProcessesAndThreadsInformation

call [ZwQuerySystemInformation]

Sau đó chúng ta sẽ dùng một vòng lặp để lấy thông tin trong buffer của SystemInformationClass ra. Thông tin này có cấu trúc SYSTEM_PROCESS_INFORMATION. Chúng ta sẽ trích xuất nó và cho hiển thị:

invoke RtlZeroMemory,addr lvi,sizeof lvi

mov lvi.imask,LVIF_TEXT

lea eax,lpBuffer

mov lvi.pszText,eax

invoke RtlZeroMemory,addr lpBuffer,260

mov esi,[SystemInformation]

assume esi:ptr SYSTEM_PROCESS_INFORMATION

.while ([esi].NextEntryDelta)

add esi,[esi].NextEntryDelta

mov lvi.iSubItem,0

mov eax,[esi].ProcessName.Buffer

invoke wsprintf,addr lpBuffer,CTXT("%ls"),eax

invoke SendMessage,hList,LVM_INSERTITEM,NULL,addr lvi inc lvi.iSubItem

invoke wsprintf,addr lpBuffer,CTXT("%ld"),\

[esi].ProcessId

invoke SendMessage,hList,LVM_SETITEM,NULL,addr lvi

inc n

.endw

Cuối cùng chúng ta sẽ free vùng nhớ đã cấp phát trước đó

assume esi:nothing

invoke VirtualFree,[SystemInformation],10000h,MEM_DECOMMIT

invoke MessageBox,0,chr$("Method 2"),chr$("Method"),MB_OK

Sau đây là các macros cần tham khảo thêm khi coding trong project này

1/-FUNC: tương đương macro rv

Macro này sẽ gọi một hàm API và giá trị trả về trong eax, được dùng như sau:

FUNC

mov rval, FUNC(AnyProcedureCall,args ......)


Description

Call bất kỳ procedure nào với một giá trị trả về return value.


Parameters

Any procedure call complete with arguments that returns a value.


Return Value

The return value from a procedure call which is normally the EAX register.


Comments

This macro utilises (sử dụng) the "invoke" syntax and the EXITM macro operator to return a value which can be either assigned (chỉ định) to a variable (biến) with MOV or directly used in the same manner as the EAX register.

mov retval, FUNC(APIcall,arguments ...)
test FUNC(YourProc,arguments ...), eax
cmp FUNC(AnyProc,arguments ...), 1234
add edx, FUNC(APIcall,arguments ...)

Ví dụ 1:

mov ZwQuerySystemInformation, FUNC(GetProcAddress,FUNC(GetModuleHandle,CTXT("ntdll.dll")),CTXT("ZwQuerySystemInformation"))

Tương đương:

invoke GetModuleHandle,CTXT("ntdll.dll")

invoke GetProcAddress,eax, CTXT("ZwQuerySystemInformation")

mov ZwQuerySystemInformation,eax

Ví dụ 2:

mov hProcess, rv(OpenProcess,PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,FALSE,pid)

2/-CTXT : tương đương macro chr$ hoặc SADD

chr$

mov pstr, chr$("quoted text",13,10)


Description

Write mixed text and byte data to the .DATA section and return the starting address of that data.


Parameters

A variable number of items of quoted text and byte data.


Return Value

The return value is the starting address of the data written to the .DATA section.


Comments

This macro writes directly to the .DATA section and it can use either quoted text or byte data in the normal format for the .DATA section. It can be used in places where the internal MASM reserve characters interfere with quoted text or byte data being used.

fn MessageBox,hWnd,chr$("one",13,10,"two",13,10"three",13,10),lpTitle,MB_OK

Ví dụ:

invoke GetModuleHandle,CTXT("ntdll.dll")

Tương đương:

.data

szntdll db "ntdll.dll",0

.code

invoke GetModuleHandle,addr szntdll

3/- ptr$ : tính địa chỉ một biến local

ptr$

mov lpstring, ptr$(buffer)


Description

Tính address of một biến local variable đến một biến con trỏ (pointer variable).


Parameters

1. buffer Một buffer được chỉ định trên stack.


Return Value

address of buffer.


Comments

Macro này loads address of một biến stack vào trong một register and sets the first two (2) bytes to zero. Assigning the return value to a variable makes the value into a pointer which is generally easier to use that repeatedly using LEA to obtain the address.

Ví dụ:

LOCAL pbuf :DWORD

LOCAL buffer[4096]:BYTE

mov pbuf, ptr$(buffer)

Tương đương:

lea eax, buffer

mov pbuf,eax

4/- cat$: nối nhiều string

cat$

mov lpbuffer, cat$(lpBuffer,[variable number of strings])


Mô tả

Nối nhiều string vào trong một buffer.


Tham số

1. lpBuffer The address of the source buffer to append other strings to.
2. A variable number of string addresses được gắn vào source buffer.


Return Value

Giá trị trả về là addr của source buffer mà nó có thể được quy trở lại chính nó hay đến con trỏ khác (string handle).


Comments

This is a very flexible and useful macro that can handle multiple strings in different formats. If the source buffer does not already have string data in it, the first byte MUST be set to a zero byte so it is seen as a zero length string. The source string buffer must be large enough to receive all of the string data appended to it.


Example

mov lpbuffer, cat$(lpbuffer,"The result is ",ustr$(count)," bytes in length")

Ví dụ:

mov ptxt, cat$(ptxt,"pid ",str$(pid)," ",pbuf)

5/- ustr$: chuyển một số 32bit int thành một str kết thúc zero

ustr$

mov lpResult, ustr$(uInteger)


Description

Convert an unsigned 32 bit integer to a zero terminated string.


Parameters

1. uInteger An unsigned 32 bit integer.


Return Value

The return value is the address of the zero terminated string that holds the result as an OFFSET.


Comments

Each macro call in the assembler source code provides a 20 byte long buffer in the data section to hold the results of the conversion.

3.Phương pháp 3: Using ToolHelp32 API

Một process đang running trong system sẽ được Windows lưu trữ các thông tin liên quan đến process đó như heaps, modules, threads. Tại một thời điềm nào đó, Windows sẽ lưu trữ toàn bộ các thông tin của các processes đang chạy hiện hành. Toàn bộ dữ liệu lưu trữ của các processes hiện hành tại một thời điểm gọi là một snapshot. Chúng ta sẽ dùng hàm API CreateToolhelp32Snapshot để bắt lấy snapshot của các processes hiện hành. Sau đó dùng hàm Process32First đề lấy thông tin process đầu tiên trong snapshot. Để lấy thông tin process kế tiếp trong snapshot ta dùng hàm Process32Next. Như vậy là ta có thể lấy tất cả thông tin của toàn bộ processes đang running. Thông tin lấy được chứa trong mọt cấu trúc có tên là PROCESSENTRY32. Phương pháp này là rõ ràng nhất, và có thể thấy nó là phương pháp chính quy mà Windows khuyến cáo sử dụng.

Sau đây là một số thông tin về các hàm API liên quan sử dụng.

CreateToolhelp32Snapshot Function

Bắt lấy một snapshot of các processes được chỉ định, giống như heaps, modules, và threads được sử dụng bởi các processes này.

Syntax

HANDLE WINAPI CreateToolhelp32Snapshot(

__in DWORD dwFlags,

__in DWORD th32ProcessID

);

Parameters

dwFlags [in]

Các phần of system được included trong snapshot. Tham số này có thể là một hay nhiều giá trị sau đây.

Value

Meaning

TH32CS_INHERIT
0x80000000

Cho biết rằng snapshot handle là thừa kế.

TH32CS_SNAPALL

Bao gồm tất cả các processes và các threads trong system, cộng heaps và modules of process được chỉ định trong th32ProcessID. Qui đổi chỉ rõ các giá trị TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPPROCESS, và TH32CS_SNAPTHREAD được kết hợp với nhau sử dụng OR operation ('|').

TH32CS_SNAPHEAPLIST
0x00000001

Bao gồm tất cả các heaps of process được chỉ định trong th32ProcessID trong snapshot. Để liệt kê các heaps, xem Heap32ListFirst.

TH32CS_SNAPMODULE
0x00000008

Bao gồm tất cả các modules of process được chỉ 9ịnh trong th32ProcessID trong snapshot. Để liệt kê các modules, xem Module32First.

64-bit Windows: Sử dụng flag này trong một 32-bit process bao gồm 32-bit modules of process được chỉ định trong th32ProcessID, khi sử dụng nó trong một 64-bit process bao gồm 64-bit modules. Để bao gồm 32-bit modules of process được chỉ định trong th32ProcessID từ một 64-bit process, sử dụng TH32CS_SNAPMODULE32 flag.

TH32CS_SNAPMODULE32
0x00000010

Bao gồm tất cả các 32-bit modules of process được chỉ định trong th32ProcessID trong snapshot khi called từ một 64-bit process. Flag này có thể được kết hợp với TH32CS_SNAPMODULE hay TH32CS_SNAPALL.

TH32CS_SNAPPROCESS
0x00000002

Bao gồm tất cả các processes trong system trong snapshot. Để liệt kê các processes, xem Process32First.

TH32CS_SNAPTHREAD
0x00000004

Bao hàm tất cả các threads trong system vào trong snapshot. Để liệt kê các threads, xem Thread32First.

Để nhận ra các threads thuộc về một process cụ thể, so sánh các process identifier của nó với th32OwnerProcessID member of THREADENTRY32 structure khi liệt kê các threads.

th32ProcessID [in]

process identifier of process được bao hàm trong snapshot. Tham số này có thể là zero để cho biết current process. Tham số này được sử dụng khi TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPMODULE32, hay TH32CS_SNAPALL value được chỉ định. Nói cách khác, nó được bỏ qua và tất cả các processes được included vào trong snapshot.

Nếu process được chỉ định là một 64-bit process và caller là một 32-bit process, thì hàm này fails và last error code là ERROR_PARTIAL_COPY (299).

Return Value

Nếu function thành công, nó returns một open handle của snapshot được chỉ định.

Nếu function fails, nó returns INVALID_HANDLE_VALUE. Để có được thông tin phần báo error, call GetLastError.

Remarks

Snapshot được bắt lấy bởi hàm này được kiểm tra bởi các tool help functions khác để cung cấp các results của chúng. Truy xuất đến snapshot chỉ được read . Snapshot handle hành động như một object handle và lệ thuộc vào các quy tắc tương tự liên quan đến các processes nào và threads nào trong đó mà nó hợp lệ.

Để liệt kê các trạng thái heap hay module cho tất cả processes, chỉ định TH32CS_SNAPALL và set th32ProcessID là zero. Rồi, đối với process thêm vào trong snapshot, call CreateToolhelp32Snapshot một lần nữa, chỉ định process identifier của nó và TH32CS_SNAPHEAPLIST or TH32_SNAPMODULE value.

Hủy snapshot, sử dụng hàm CloseHandle function.

Chú ý rằng bạn có thể sử dụng QueryFullProcessImageName function để nhận full name of một executable image cho cả hai 32- và 64-bit processes từ một 32-bit process.

Example Code

Cho ví dụ, xem Taking a Snapshot and Viewing Processes.

Requirements

Client

Requires Windows Vista, Windows XP, or Windows 2000 Professional.

Server

Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.

Header

Declared in Tlhelp32.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

See Also

CloseHandle
Heap32ListFirst
Module32First
Process32First
Snapshots of the System
Thread32First
Tool Help Functions

Send comments about this topic to Microsoft

Process32First Function

Nhận thông tin về first process bắt gặp trong một system snapshot.

Syntax

BOOL WINAPI Process32First(

__in HANDLE hSnapshot,

__inout LPPROCESSENTRY32 lppe

);

Parameters

hSnapshot [in]

Một handle của snapshot trả về từ hàm gọi trước đó là hàm CreateToolhelp32Snapshot function.

lppe [in, out]

Một pointer trỏ đến một PROCESSENTRY32 structure. Nó chứa thông tin process như là name of executable file, process identifier, và process identifier of parent process.

Return Value

Returns TRUE nếu thành phần đầu tiên của process list được copy đến buffer hay khác là FALSE. ERROR_NO_MORE_FILES error value được trả về bởi GetLastError function nếu ko có processes tồn tại hay snapshot ko chứa thông tin process .

Remarks

Ứng dụng gọi hàm phải set dwSize member of PROCESSENTRY32 là size, đơn vị bytes, of structure.

Để nhận thông tin về các processes khác đã được ghi trong snapshot tương tự, ta sử dụng hàm Process32Next function.

Example Code

Chi ví dụ, xem Taking a Snapshot and Viewing Processes.

Requirements

Client

Requires Windows Vista, Windows XP, or Windows 2000 Professional.

Server

Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.

Header

Declared in Tlhelp32.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

Unicode/ANSI

Implemented as Process32FirstW (Unicode) and Process32First (ANSI).

See Also

CreateToolhelp32Snapshot
Process Walking
Process32Next
PROCESSENTRY32
Tool Help Functions

Send comments about this topic to Microsoft

Process32Next Function

Nhận thông tin về next process được ghi trong một system snapshot.

Syntax

BOOL WINAPI Process32Next(

__in HANDLE hSnapshot,

__out LPPROCESSENTRY32 lppe

);

Parameters

hSnapshot [in]

Một handle của snapshot returned từ một hàm trước đó là CreateToolhelp32Snapshot function.

lppe [out]

Một pointer trỏ đến một PROCESSENTRY32 structure.

Return Value

Returns TRUE nếu phần tử kế tiếp of process list được copy đến buffer hay khác thì FALSE . Gía trị ERROR_NO_MORE_FILES error value được returned bởi GetLastError function nếu ko có processes tồn tại hay snapshot ko chứa thông tin process information.

Remarks

Nhận thông tin về first process thu được trong một snapshot, sử dụng Process32First function.

Example Code

Cho một ví dụ, xem Taking a Snapshot and Viewing Processes.

Requirements

Client

Requires Windows Vista, Windows XP, or Windows 2000 Professional.

Server

Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.

Header

Declared in Tlhelp32.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

Unicode/ANSI

Implemented as Process32NextW (Unicode) and Process32Next (ANSI).

See Also

CreateToolhelp32Snapshot
Process Walking
Process32First
PROCESSENTRY32
Tool Help Functions

Send comments about this topic to Microsoft

PROCESSENTRY32 Structure

Mô tả một entry từ list of các processes cư trú trong system address space khi một snapshot đước bắt lấy.

Syntax

typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];

} PROCESSENTRY32,
*PPROCESSENTRY32;

Members

dwSize

Size of structure, đơn vị bytes. Trước khi gọi hàm Process32First function, set thành phần này là sizeof(PROCESSENTRY32). Nếu bạn ko khởi trị đầu dwSize, thì Process32First fails.

cntUsage

Thành phần này ko được sử dụng và luôn set là zero.

th32ProcessID

Process identifier.

th32DefaultHeapID

Thành phần này ko được sử dụng và luôn set là zero.

th32ModuleID

Thành phần này ko được sử dụng và luôn set là zero.

cntThreads

Số execution threads được bắt đầu bởi process.

th32ParentProcessID

Identifier of process mà nó được cài đặt process này (its parent process).

pcPriClassBase

The base priority (quyền ưu tiên cơ bản) of các threads nào đó được cài đặt bởi process này.

dwFlags

Thành phần này ko được sử dụng, và luôn set thành zero.

szExeFile

Name of executable file cho process. Để nhận full path đến executable file, call Module32First function và check szExePath member of MODULEENTRY32 structure mà nó được trả về. Tuy nhiên, nếu calling process là một 32-bit process, bạn phải call QueryFullProcessImageName function để nhận full path of executable file cho một 64-bit process.

Example Code

Cho ví dụ, xem Taking a Snapshot and Viewing Processes.

Requirements

Client

Requires Windows Vista, Windows XP, or Windows 2000 Professional.

Server

Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.

Header

Declared in Tlhelp32.h.

Unicode/ANSI

Declared as PROCESSENTRY32W (Unicode) and PROCESSENTRY32 (ANSI).

See Also

Process32First
Process32Next

Send comments about this topic to Microsoft

Thực hành:

invoke SendMessage,hList,LVM_DELETEALLITEMS,NULL,NULL

invoke CreateToolhelp32Snapshot, TH32CS_SNAPALL, 0

mov hSnapShot, eax ; store the snapshot handle

mov myProcess.dwSize, sizeof myProcess

invoke RtlZeroMemory,addr lvi,sizeof lvi

mov lvi.imask,LVIF_TEXT

invoke Process32First,hSnapShot, ADDR myProcess

.while eax

mov lvi.iSubItem,0

mov lvi.iSubItem,0

lea eax,myProcess.szExeFile

mov lvi.pszText,eax

invoke SendMessage,hList,LVM_INSERTITEM,NULL,addr lvi

inc lvi.iSubItem

lea eax,lpBuffer

mov lvi.pszText,eax

invoke wsprintf,addr lpBuffer,CTXT("%ld"),\

myProcess.th32ProcessID

invoke SendMessage,hList,LVM_SETITEM,NULL,addr lvi

invoke Process32Next,hSnapShot, ADDR myProcess

.endw

invoke CloseHandle,hSnapShot ; close snapshot handle

invoke MessageBox,0,chr$("Method 3"),chr$("Method"),MB_OK

HÉT PHẦN 1

BENINA