banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận virus, trojan, spyware, worm... AntiDebug (ForVirus)  XML
  [Question]   AntiDebug (ForVirus) 07/05/2008 04:37:04 (+0700) | #1 | 129283
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Tôi chi nói trên một khía cạnh hẹp là chống gở rối cho virus.

Gở rối là gì ?
Gở rối là một chương trình chuyển một file mã máy thành một dạng văn bản mà con người có thể đọc hiểu. Hoặc để một chương trình nào đó như diệt virus biết được file EXE đang làm cái gì, đang can thiệp vào nhửng nguồn tài nguyên nào.

Chống gở rối

1.Viết EXE không đúng chuẩn.
Mình không đùa dâu các chương trình exe chạy trên W32 đều có một "định dạng" chung.
Chúng có các phần chuyên biệt. phần chứa dử liệu,phần chứa các lệnh...
Dựa vào khôn mẩu này các chương trình debug sẽ biết bạn gọi hàm API nào và có chửa dử liệu gì và có thể dử liệu đó có thể là đặc trưng cho virus của bạn và bạn sẽ bi nấu cao ngay.Để làm được việc này bạn phải tự viết tất cả mọi thử kể cả việc viết các hàm na ná như API, hoặc nạp API băng đoạn mã chuyên biệt. Việc này chi có Pác bào Pro thui mình không rõ.

2.Không xây dựng hàm cho virus của bạn tốt nhất là cứ để nó đơn giản và rắc rối (Win32.3x3 tiêu biểu).
VD:
Main:
cmp eax,01h
je VuaLamViec1
cmp eax,02h
je VuaLamViec2
Viec1:
.....
mov eax,01h
jmp Main
Viec2:
.....
mov eax,02h
jmp Main
Ái chà sẽ rắc rối đây.

3.Chèn thêm lệnh nhảy vô điều kiện.
Việc này đòi hỏi các bạn phải giỏi trong việc tính toán địa chỉ kẻo sau khi antidebug xong các bạn antivirus của mình luôn.
VD:
000001h : cmp eax,0
000002h : jne 0000FF
...
0000FFh : push eax
ta sẻ chuyển 000002h về cuối file giả sử FFFFFFh
000001h : cmp eax,0
000002h : jmp FFFFFFh
...
0000FFh : push eax
FFFFFFh : jne 0000FF

4.Sử dụng các hàm các phát biểu mang tính đệ quy để đưa chương trình debuge vào vòng lặp.
VD:
Function LoadMe()
Call LoadMe()
...
Call LoadMe()
End Function
Cách này đôi lúc không hiệu quả nhưng nếu gài bẩy khéo các chương trình debug vẩn dính như thường.

5.Virus ăn thịt file khác để tăng kích thước nhằm làm tràn bộ nhớ khi debug (có thể kèm với jmp vô điều kiện)


Mình phải bye các bạn rùi ! bài viết chưa hay mong các bạn góp ý. smilie
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 06:41:48 (+0700) | #2 | 129309
[Avatar]
secmask
Elite Member

[Minus]    0    [Plus]
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
[Profile] [PM] [WWW]
hỉu chết liền smilie
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 07:03:37 (+0700) | #3 | 129315
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Lại một mớ xxx gì nữa mà cậu only1bit copy ở đâu rồi post lên đây. Học cái gì không học mà sao cứ học hack vớ virus vi riết chi vậy.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 11:24:09 (+0700) | #4 | 129350
[Avatar]
kienmanowar
HVA Friend

Joined: 13/07/2004 05:57:34
Messages: 483
Offline
[Profile] [PM] [WWW]
Bạn luôn quảng cáo là VB tuyệt thế này, vb tuyệt thế nọ nhưng sao lại sử dụng asm để demo code, cái tôi cần là anti-debug nhưng mà source code là bằng VB cơ. Với lại đọc bài của cậu xong vẫn chẳng hiểu Anti-Debug là cái chi chi, chỉ toàn thấy nhảy ngược nhảy xuôi, nhảy đến lúc không nhảy nữa thì lại nhảy về Main smilie.

Regards
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 12:21:55 (+0700) | #5 | 129362
rol.ror.xor.add
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 20:04:55
Messages: 7
Offline
[Profile] [PM]

Gở rối là gì ?
Gở rối là một chương trình chuyển một file mã máy thành một dạng văn bản mà con người có thể đọc hiểu.
 


Wat ?


Hoặc để một chương trình nào đó như diệt virus biết được file EXE đang làm cái gì, đang can thiệp vào nhửng nguồn tài nguyên nào.
 


Wow!!


1.Viết EXE không đúng chuẩn.
Mình không đùa dâu các chương trình exe chạy trên W32 đều có một "định dạng" chung.
Chúng có các phần chuyên biệt. phần chứa dử liệu,phần chứa các lệnh...
Dựa vào khôn mẩu này các chương trình debug sẽ biết bạn gọi hàm API nào và có chửa dử liệu gì và có thể dử liệu đó có thể là đặc trưng cho virus của bạn và bạn sẽ bi nấu cao ngay.Để làm được việc này bạn phải tự viết tất cả mọi thử kể cả việc viết các hàm na ná như API, hoặc nạp API băng đoạn mã chuyên biệt.
 


Khám phá mới! :O :O


2.Không xây dựng hàm cho virus của bạn tốt nhất là cứ để nó đơn giản và rắc rối (Win32.3x3 tiêu biểu).
 


Khó hiểu à nha :/ Vừa đơn giản và vừa rắc rối ?


Main:
cmp eax,01h
je VuaLamViec1
cmp eax,02h
je VuaLamViec2
Viec1:
.....
mov eax,01h
jmp Main
Viec2:
.....
mov eax,02h
jmp Main
Ái chà sẽ rắc rối đây.
 


Rắc rối ở chỗ nào nhỉ smilie ?


3.Chèn thêm lệnh nhảy vô điều kiện.
Việc này đòi hỏi các bạn phải giỏi trong việc tính toán địa chỉ kẻo sau khi antidebug xong các bạn antivirus của mình luôn.
VD:
000001h : cmp eax,0
000002h : jne 0000FF
...
0000FFh : push eax
ta sẻ chuyển 000002h về cuối file giả sử FFFFFFh
000001h : cmp eax,0
000002h : jmp FFFFFFh
...
0000FFh : push eax
FFFFFFh : jne 0000FF
 


"Ta sẽ chuyển 000002h về cuối file". Pointless.


4.Sử dụng các hàm các phát biểu mang tính đệ quy để đưa chương trình debuge vào vòng lặp.
VD:
Function LoadMe()
Call LoadMe()
...
Call LoadMe()
End Function
Cách này đôi lúc không hiệu quả nhưng nếu gài bẩy khéo các chương trình debug vẩn dính như thường.
 



Wat ??



5.Virus ăn thịt file khác để tăng kích thước nhằm làm tràn bộ nhớ khi debug (có thể kèm với jmp vô điều kiện)
 


WATTT ??? I start to lose my sense of humour...


Có vài lời góp ý với bạn:

+ Nếu bạn hiểu thực sự một vấn đề nào đó thì hãy đưa ra ý kiến của mình.
+ Bạn nên học thêm ASM và học lại cơ sở kiến thức về lập trình hệ thống.


-rrxa
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 22:04:20 (+0700) | #6 | 129398
[Avatar]
Look2Me
Member

[Minus]    0    [Plus]
Joined: 26/07/2006 23:30:57
Messages: 235
Location: Tủ quần nào
Offline
[Profile] [PM]
Chán ghê! Biết 10 nói 1 đã là không tốt, nhưng biết 1 nói 10 thì ...
Cái đầu tiên: "Anti-Debug" là gì thì đã chưa đúng ....
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 07/05/2008 22:30:45 (+0700) | #7 | 129401
[Avatar]
VXer
Member

[Minus]    0    [Plus]
Joined: 20/12/2007 10:22:40
Messages: 44
Offline
[Profile] [PM]
Đây đúng là kĩ thuật "anti-debug" rồi, khiến người đọc bị lú lẫn không thể "debug" nổi bài viết đúng hay sai smilie .
Mà hình như kiểu này ít ai gọi là anti-debug mà hay gọi là Obfuscator thì phải smilie
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 08/05/2008 06:14:37 (+0700) | #8 | 129522
vuadapass
Member

[Minus]    0    [Plus]
Joined: 24/08/2006 21:52:13
Messages: 23
Offline
[Profile] [PM] [Yahoo!]
Em cần người cùng tham gia dự án viết phần mềm anti-debug cho EXE . Xin mọi người ai có khả năng hiểu biết về lĩnh vực này giúp đỡ.
Đây là phần bypass_me RC2 mà em viết code anti-debug bằng VB đã được chú Why trong REA patch phá giải :
Download :
http://www.haprovietnam.vn/vuadapass/gamesecure/bypass_me3%5Brc2%5D.rar 

Hiện tại em vẫn đang tiếp tục phát triển nó và làm theo hướng công nghiệp hoá ( Thành một Protector Engine )
Mọi người thử debug nó mà không xem solution nhé smilie
p/s : chú kienma ơi, cháu đã đọc qua pe tutorial của chú, cháu muốn chú giúp trong công đoạn PE file format và Section ... được không ạ ?
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 15/05/2008 22:11:58 (+0700) | #9 | 130671
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Uhm ! các bạn giỏi hơn mình để đánh giá mình sao ngưỡng mộ quá.

Mình chi muốn mọi thứ đơn giản để mọi người cùng hỉu và có thể áp dụng ngay thôi.Nếu bạn nào nghĩ mình copy bài của ai đó thì làm ơn đi xem bài viết của mình có giống của ai đó không nha.
Kiến thức này mình lượm lặt được khi đọc demo code của các virus khác đóa.

Ưhm ! viêc anti debug này mặc dù viết bằng asm nhưng bạn có thể áp dụng cho VC,CB,...
đừng nói các bạn không biết làm việc này.

Nè nói thật nha ! dạy bảo người khác thì được chứ đừng vội chê trách người khác.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 15/05/2008 22:16:14 (+0700) | #10 | 130672
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Êh ! nếu không muốn tìm hỉu antidebug ở cấp thấp thì làm ơn kiếm mấy tool có sẵn để làm việc này cho dễ.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 15/05/2008 22:31:07 (+0700) | #11 | 130673
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Lúc nào mình sẽ post lên source của một vài virus được viết không đúng chuẩn.
Và mã nguồn của sửa dụng hàm đệ quy.

Bye nha !

Mình thích VB6.0 nhưng không có nghĩa mình sẽ gắn bó cả cuộc đời với nó.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 15/05/2008 22:37:51 (+0700) | #12 | 130676
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

only1bit wrote:
Uhm ! các bạn giỏi hơn mình để đánh giá mình sao ngưỡng mộ quá.

Mình chi muốn mọi thứ đơn giản để mọi người cùng hỉu và có thể áp dụng ngay thôi.Nếu bạn nào nghĩ mình copy bài của ai đó thì làm ơn đi xem bài viết của mình có giống của ai đó không nha.
Kiến thức này mình lượm lặt được khi đọc demo code của các virus khác đóa.

Ưhm ! viêc anti debug này mặc dù viết bằng asm nhưng bạn có thể áp dụng cho VC,CB,...
đừng nói các bạn không biết làm việc này.

Nè nói thật nha ! dạy bảo người khác thì được chứ đừng vội chê trách người khác.
 


Lạ nhỉ? Đầu tiên thách đố thiên hạ là VB6 có anti-debug, bất khả xâm phạm nhưng lại vác cái mới ASM ngoằn ngoèo lên khiến nhiều người thắc mắc với những chi tiết của mớ ngoằn ngoèo đó. Tại sao không trả lời các thắc mắc mà lại chống chế bằng chuyện chê trách gì ở đây nhỉ?
What bringing us together is stronger than what pulling us apart.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 16/05/2008 23:57:31 (+0700) | #13 | 130832
[Avatar]
crown
Member

[Minus]    0    [Plus]
Joined: 17/04/2003 09:51:30
Messages: 33
Location: hungvuong-aptech
Offline
[Profile] [PM] [Email] [Yahoo!]

conmale wrote:

only1bit wrote:
Uhm ! các bạn giỏi hơn mình để đánh giá mình sao ngưỡng mộ quá.

Mình chi muốn mọi thứ đơn giản để mọi người cùng hỉu và có thể áp dụng ngay thôi.Nếu bạn nào nghĩ mình copy bài của ai đó thì làm ơn đi xem bài viết của mình có giống của ai đó không nha.
Kiến thức này mình lượm lặt được khi đọc demo code của các virus khác đóa.

Ưhm ! viêc anti debug này mặc dù viết bằng asm nhưng bạn có thể áp dụng cho VC,CB,...
đừng nói các bạn không biết làm việc này.

Nè nói thật nha ! dạy bảo người khác thì được chứ đừng vội chê trách người khác.
 


Lạ nhỉ? Đầu tiên thách đố thiên hạ là VB6 có anti-debug, bất khả xâm phạm nhưng lại vác cái mới ASM ngoằn ngoèo lên khiến nhiều người thắc mắc với những chi tiết của mớ ngoằn ngoèo đó. Tại sao không trả lời các thắc mắc mà lại chống chế bằng chuyện chê trách gì ở đây nhỉ? 

ai cũng có một thời háu đá, tất cả chúng ta cũng thế ai cũng muốn chứng tỏ mình, bây giờ thì lại nhìn lại mình smilie
thế giới ảo là vậy, nếu không có những người như vậy thì chẳng có ai tham gia cả smilie smilie "đừng vội cười người khác khi có một người khác đang cười mình"
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 17/05/2008 00:46:36 (+0700) | #14 | 130838
[Avatar]
VXer
Member

[Minus]    0    [Plus]
Joined: 20/12/2007 10:22:40
Messages: 44
Offline
[Profile] [PM]
@Vuadapass: cái bypass me của bạn cũng dùng cơ chế protector/antidebug của soft khác chứ không phải hoàn toàn VB6 smilie

@Only1Bit: vẫn đang chờ Antidebug bằng VB của bạn smilie
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 17/05/2008 07:54:41 (+0700) | #15 | 130890
vuadapass
Member

[Minus]    0    [Plus]
Joined: 24/08/2006 21:52:13
Messages: 23
Offline
[Profile] [PM] [Yahoo!]

VXer wrote:
@Vuadapass: cái bypass me của bạn cũng dùng cơ chế protector/antidebug của soft khác chứ không phải hoàn toàn VB6 smilie
 

xin lỗi anh, ý anh nói là em sử dụng phương thức protect của một engine nào đó hay em sử dụng một packer/protector để protect cho thư viện của em ?
vấn đề này em đã post trên REA . Thư viện DLL chính em bắt buộc phải có một lớp protect & encrypt cấp cao đó là Armadillo . Em sử dụng nó chỉ với mục đích bảo toàn DLL của em khỏi bị Decomplie từ một số soft như VBRezQ, VBDicomplier ..... (một điểm yếu của VB khi bị resource form) . Ngoài ra phiên bản Arm em đang sử dụng là v5.02, hoàn toàn có thể dễ dàng bypass với Olly đã mod, plugins, tool hide .... Cái chính vẫn là phần code của thư viện dll đã viết. Nó không phụ thuộc vào việc DLL được một trình Protector bảo vệ . Em chỉ muốn sử dụng một Packer tốt để bảo vệ thư viện DLL chính thôi.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 19/05/2008 00:09:43 (+0700) | #16 | 131198
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Ặc ! nói gì mà lôn xộn vậy.
Ngựa nón háu đá cái quái gì cơ chứ.
Ưhm ! box mở ra với mục đích trao đổi ý kiến chứ đâu phải để khích bác nhau đâu.
Tui đã nói từ đầu là ai bít nhìu hơn thì xin chỉ giáo rùi mà.

Còn chuyện tui thích VB hay ASM32 hay bất cứ ngôn ngử gì khác là chuyện của tui liên quan gì tới các người.
Nói thêm về vụ VB6.0 nó sài Pcode nên tất nhiên không dasm được rùi ặc.....
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 19/05/2008 00:22:20 (+0700) | #17 | 131203
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Nói thêm về cách 2 không dùng các hàm.

Mổi hàm sẽ được phát một địa chỉ tạm gọi Export Point.
Căn cứ và điều này các chương trình antivirus sẽ biết được trong chương trình có những hàm nào. Vì vậy bạn thay viết các hàm bạn sẽ lập trình theo cách cổ điển một chương trình không cấu trúc trả lại giá trị cho một biến toàn cục.

Nè demo bằng VB6.0 nha (VB6.0 không sử dụng mã máy nhưng DLL nó vẩn có thể sử dụng cho các chương trình khác) : (đừng nhăn răng ra như vậy xấu lắm).

Private Sub Main()
Dim MainValue As String
Dim TimThay As Boolan
QuayLaiTuDau:
If MainValue="Khong Tim Thay Dia Cung" Goto TimDiaCung
If MainValue="Tim Thay O Dia C" Goto ChepVao
TimDiaCung:
'Mã tìm đĩa cứng ở đây
If TimThay=True Then
MainValue="Tim Thay O Dia C"
Else
MainValue="Khong Tim Thay Dia Cung"
End If
ChepVao:
'Mã chép vào ở đây
End Sub
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 19/05/2008 02:38:07 (+0700) | #18 | 131222
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

only1bit wrote:
Ặc ! nói gì mà lôn xộn vậy.
Ngựa nón háu đá cái quái gì cơ chứ.
Ưhm ! box mở ra với mục đích trao đổi ý kiến chứ đâu phải để khích bác nhau đâu.
Tui đã nói từ đầu là ai bít nhìu hơn thì xin chỉ giáo rùi mà.

Còn chuyện tui thích VB hay ASM32 hay bất cứ ngôn ngử gì khác là chuyện của tui liên quan gì tới các người.
Nói thêm về vụ VB6.0 nó sài Pcode nên tất nhiên không dasm được rùi ặc..... 


Đừng đánh trống lảng. Nếu muốn "không liên quan đến các người" thì đừng tuyên bố linh tinh và đừng post bài lên để bị phê bình rồi phát biểu như thế nhá.
What bringing us together is stronger than what pulling us apart.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 19/05/2008 21:31:00 (+0700) | #19 | 131358
[Avatar]
VXer
Member

[Minus]    0    [Plus]
Joined: 20/12/2007 10:22:40
Messages: 44
Offline
[Profile] [PM]

only1bit wrote:
VB6.0 không sử dụng mã máy nhưng DLL nó vẩn có thể sử dụng cho các chương trình khác 

Không hiểu smilie . Only1bit vui lòng giải thích hộ cái!

only1bit wrote:

Private Sub Main()
Dim MainValue As String
Dim TimThay As Boolean
QuayLaiTuDau:
If MainValue="Khong Tim Thay Dia Cung" Goto TimDiaCung
If MainValue="Tim Thay O Dia C" Goto ChepVao
TimDiaCung:
'Mã tìm đĩa cứng ở đây
If TimThay=True Then
MainValue="Tim Thay O Dia C"
Else
MainValue="Khong Tim Thay Dia Cung"
End If
Goto QuayLaiTuDau 'Tôi nghĩ bạn thiếu cái này
ChepVao:
'Mã chép vào ở đây
End Sub 

Tôi nghĩ bạn còn sai logic nữa smilie

Thêm nữa, theo tôi nghĩ thì với những người hay debug, việc đọc mã asm vốn đã chẳng có cấu trúc rồi, nên việc dò theo mấy lệnh goto này có thể sẽ không khác nhiều so với việc họ đọc các lệnh jmp, jne, jnz ... Nói cách khác thì đoạn mã obfuscated (tôi không coi nó là anti-debug) như trên cũng không làm cho tính không cấu trúc khi disasm tăng lên nhiều, bạn có viết source code rõ ràng trong VB thì khi disasm nó cũng lại thành không cấu trúc, lại nhảy linh tinh lên thôi mà smilie . He he mà ý kiến này hơi võ đoán, anh em nào RE nhiều vào đính chính hộ cái smilie
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 21/05/2008 03:37:02 (+0700) | #20 | 131663
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Về phần DLL ! mổi hàm dù là hàm riêng hay làm hàm dùng chung (Trong Exe hay Dll) đều có một địa chỉ là entry point để các chương trình khác hoặc chính nó dùng để gọi các hàm. Mình không sử dụng các hàm và dùng các cấu trúc không chuẩn nhằm tránh việc các AV nhận diện virus. Vì nhận diện virus dựa vào các import point,export point & entry point là một trong nhửng cách cơ bản để nhận diện và tăng khả năng nghi ngờ.

Mình rất vui vì VXer góp ý. Chân thành cảm ơn bạn.

Đó là một cách để tránh việc làm lộ diện entry point trong khi không biêt các cách khác.

Uhm ! nếu bạn viết được một chương trình xáo trộn mã của virus của bạn bằng cách chêm các lệnh JMP thì tôi e rằng bạn sẽ qua mắt được một và chương trình diệt virus đấy VXer
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 21/05/2008 03:42:31 (+0700) | #21 | 131665
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
@RE:conmale
Ưhm ! ai giỏi hơn phê bình tui thì tui mới chịu à nha ! Nếu mà chỉ giỏi nói người khác như mấy người kia thì tui không chịu đâu.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 21/05/2008 03:48:35 (+0700) | #22 | 131667
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Ưhm ! mình củng nghe nói về một vài cách khác như mã hóa EXE bằng AND,XOR hoặc NOT nhưng nói thật chưa tìm hiểu cặn kẻ lắm (Hình như người ta còn nén EXE nửa). Bạn nào bít chỉ giùm ?
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 21/05/2008 08:03:34 (+0700) | #23 | 131714
vuadapass
Member

[Minus]    0    [Plus]
Joined: 24/08/2006 21:52:13
Messages: 23
Offline
[Profile] [PM] [Yahoo!]
Vì nhận diện virus dựa vào các import point,export point & entry point là một trong nhửng cách cơ bản để nhận diện và tăng khả năng nghi ngờ.
 

--> Bây giờ em mới biết người ta nhận diện virus qua entry point đấy smilie) . Anh thử lấy một ví dụ xem nào ... một AV nào đó chăng ?? smilie . Theo như em biết thì nó nhận diện qua CRC32, MD5, Singature, API (CreateFile, CopyFile, URLDownloadToFile ...)

Ưhm ! mình củng nghe nói về một vài cách khác như mã hóa EXE bằng AND,XOR hoặc NOT nhưng nói thật chưa tìm hiểu cặn kẻ lắm (Hình như người ta còn nén EXE nửa). Bạn nào bít chỉ giùm ? 

Thường thì các Packer dùng phương pháp Crypt đoạn Opcodes trong section chứa code (.text, .code) rồi chèn thêm một đoạn mã để Decrypt đoạn Opcodes đó tại một section mới . Đặt Entry Point vào đoạn code đó . Sau khi chạy hết đoạn code Decrypt trên memory sẽ nhảy về OEP .
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 22/05/2008 06:50:10 (+0700) | #24 | 131930
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
Ưhm ! nếu như bạn nói thì nhận diện virus bằng API là gì vậy bạn.
Các hàm dù là hàm của thư viện dùng chung hay hàm riêng đều có entry point để các chương trình (hoặc chính chương trình đó gọi tới). Khi chương trình của bạn goi API thì nó là Import Point khi chương trình của bạn tạo nên một thư viện hàm (DLL or LIB) thì nó là Export Point. Các chương trình diệt virus nhận diện chúng bằng các entry point là điều cơ bản. Và nó củng là một phần để đánh giá chương trình đó có khả nghi không.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 22/05/2008 13:03:33 (+0700) | #25 | 132017
[Avatar]
Look2Me
Member

[Minus]    0    [Plus]
Joined: 26/07/2006 23:30:57
Messages: 235
Location: Tủ quần nào
Offline
[Profile] [PM]
Nhầm ... toán loạn rồi, các khái niệm: Entry Point, Import Point ^^!
Tôi nghĩ bạn nên đọc kỹ lại cấu trúc PE file tại đây.
http://virusvn.com/forum/showthread.php?t=54 

Thấy bạn only1bit có vẻ mất phương hướng quá mình có một gợi ý nhé.
Bây giờ bạn hãy thử viết một đoạn code kiểm tra xem có các chương trình như: Ollydbg, windbg, sòtice, IDA ... đang chạy trong hệ thống hay không. Nếu có thì rẽ sang một nhánh khác hoặc kết thúc ctrình. Nếu không thì tiếp tục smilie

Đây không phải là kỹ thuật gì cao siêu cả nhưng nó đúng là: Anti-Debug đó, hiện nay vẫn được sử dụng khá nhiều và hiệu quả. Bạn cứ thử hoàn thành đi rồi tớ sẽ đưa ra thêm một vài cải tiến.

Good luck!
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 23/05/2008 07:35:33 (+0700) | #26 | 132250
vuadapass
Member

[Minus]    0    [Plus]
Joined: 24/08/2006 21:52:13
Messages: 23
Offline
[Profile] [PM] [Yahoo!]
đúng là không thể nói thêm được gì nữa với anh only1bit ...
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 24/05/2008 21:59:17 (+0700) | #27 | 132532
only1bit
Member

[Minus]    0    [Plus]
Joined: 12/04/2008 21:15:03
Messages: 27
Offline
[Profile] [PM]
/*
C:\antidisassemblagemacros.zip
Sử dụng các định nghĩa mang tính chất đệ quy để chống debug
*/
/* STEVEN FORD'S ASSEMBLY MACROS
* HE IS SO PROUD OF THEM smilie
* SO.... USE THEM WISELY!!!!!
*/


//Interrupt Macros
#define "Disable_Interrupts ( )" as @" DI"
#define "Enable_Interrupts ( )" as @" EI"
#define "Interrupt_Mode (", mode ,")" as @" IM ", @mode

//Low level key reading Macros
#define "LL_Ready_KB (", val ,")" as @" LD A, ", @val ,@"\n OUT (1), A"
#define "LL_Read_KB (", var ,")" as @" IN A, (1)\n LD (", @&var ,@"), A"

//Low level reading of arrow keys
#define "Read_Arrow_Keys (", var ,")" as @" LD A, $FE\n OUT (1), A\n IN A, (1)\n LD (", @&var ,@"), A"

//Wait (to slow down program flow)
#define "wait(", var ,")" as @" LD HL, (", @&var ,@")\n LD B, H\n LD C, L\n LD HL, 0\n LD DE, 0\n LDIR"

// *********Graphics Macros*********** //
//Update display only, or display and graph buffer
#define "Update_Display_Only ( ) " as @" SET 1, (IY + 2)\n RES bufferOnly, (IY + plotFlag3)"
#define "Update_Display_and_GrBuffer ( ) " as @" RES 1, (IY + 2)\n RES bufferOnly, (IY + plotFlag3)"

// Full screen Darw
#define "Full_Screen_Draw()" as @"fullScrnDraw, (IY + apiFlg4)"

//Draw Clear Rectangle
#define "Clear_Rectangle (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_ClearRect)"
#define "Clear_Rectangle_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_ClearRect)"

//Draw Line
#define "Line (", x1 ,"-", y1 ,"-", x2 ,"-", y2 ,"-", mode ,")" as @" LD A, (", @&x1 ,@")\n LD B, A\n LD A, (", @&y1 ,@")\n LD C, A\n LD A, (", @&x2 ,@")\n LD D, A\n LD A, (", @&y2 ,@")\n LD E, A\n LD H, ", @mode ,@"\n LD L, 0\n B_CALL(_ILine)"
#define "Line_Const (", x1 ,"-", y1 ,"-", x2 ,"-", y2 ,"-", mode ,")" as @" LD B, ", @x1 ,@"\n LD C, ", @y1 ,@"\n LD D, ", @x2 ,@"\n LD E, ", @y2 ,@"\n LD H, ", @mode ,@"\n B_CALL(_ILine)"

//Draw Rectangle Border
#define "Rectangle_Border (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_DrawRectBorder)"
#define "Rectangle_Border_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_DrawRectBorder)"

//Clear Rectangle with a Border
#define "Clear_Rectangle_with_Border (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_DrawRectBorderClear)"
#define "Clear_Rectangle_with_Border_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_DrawRectBorderClear)"

// Erase rectangle border
#define "Erase_Rectangle_Border (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_EraseRectBorder)"
#define "Erase_Rectangle_Border_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_EraseRectBorder)"

// Full rectangle
#define "Full_Rectangle (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_FillRect)"
#define "Full_Rectangle_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_FillRect)"

//Clear Graph Buffer
#define "Clear_GBuffer ( )" as @" B_CALL(_GrBufClr)"

//Copy buffer to display
#define "Copy_GBuffer_to_Screen ( )" as @" B_CALL(_GrBufCpy)"

//Use Fast Circle
#define "Fast_Circle_On ( )" as @" SET useFastCirc, (IY + plotFlag3)"
#define "Fast_Circle_Off( )" as @" RES useFastCirc, (IY + plotFlag3)"

//Draw Circle
#define "Draw_Circle (", x ,"-", y ,"-", r ,")" as @" LD A, (", @&x ,@")\n LD (curGX2), A\n LD (curGX), A\n LD A, (", @&y ,@")\n LD (curGY2), A\n LD B, A\n LD A, (", @&r ,@")\n ADD A, B\n LD (curGY), A\n B_CALL(_GrphCirc)"
#define "Draw_Circle_Const (", x ,"-", y ,"-", r ,")" as @" LD A, ", @x ,@"\n LD (curGX2), A\n LD (curGX), A\n LD A, ", @y ,@"\n LD (curGY2), A\n LD B, A\n LD A, (", @r ,@")\n ADD A, B\n LD (curGY), A\n B_CALL(_GrphCirc)"

//Force Full Screen
#define "Force_Full_Screen ( )" as @" B_CALL(_ForceFullScreen)"

//Inverted Rectangle
#define "Invert_Rectangle (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD A, (", @&ulpxrow ,@")\n LD H, A\n LD A, (", @&ulpxcol ,@")\n LD L, A\n LD A, (", @&lrpxrow ,@")\n LD D, A\n LD A, (", @&lrpxcol ,@")\n LD E, A\n B_CALL(_InvertRect)"
#define "Invert_Rectangle_Const (", ulpxcol ,"-", ulpxrow ,"-", lrpxcol ,"-", lrpxrow ,")" as @" LD H, ", @ulpxrow ,@"\n LD L, ", @ulpxcol ,@"\n LD D, ", @lrpxrow ,@"\n LD E, ", @lrpxcol ,@"\n B_CALL(_InvertRect)"

//Points
#define "Point_On (", x ,"-", y, ")" as @" LD A, (", @&x ,@")\n LD B, A\n LD A, (", @&y ,@")\n LD C, A\n B_CALL(_PointOn)"
#define "Point_On_Const (", x ,"-", y, ")" as @" LD B, ", @x ,@"\n LD C, ", @y ,@"\n B_CALL(_PointOn)"
#define "Point_Change (", x ,"-", y ,")" as @" LD A, (", @&x ,@")\n LD B, A\n LD A, (", @&y ,@")\n LD C, A\n LD D, 2\n B_CALL(_IPoint)"
#define "Point_Change_Const (", x ,"-", y ,")" as @" LD B, ", @x ,@"\n LD C, ", @y ,@"\n LD D, 2\n B_CALL(_IPoint)"
#define "Point_Off (", x ,"-", y ,")" as @" LD A, (", @&x ,@")\n LD B, A\n LD A, (", @&y ,@")\n LD C, A\n LD D, 0\n B_CALL(_IPoint)"
#define "Point_Off_Const (", x ,"-", y ,")" as @" LD B, ", @x ,@"\n LD C, ", @y ,@"\n LD D, 0\n B_CALL(_IPoint)"

//Draw to Gbuffer only
#define "Draw_GBuffer_Only ( )" as @" SET bufferOnly, (IY + plotFlag3)"

#eof
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 24/05/2008 22:45:55 (+0700) | #28 | 132545
[Avatar]
secmask
Elite Member

[Minus]    0    [Plus]
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
[Profile] [PM] [WWW]
tôi nghĩ topic này nên close được rồi.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 24/05/2008 23:03:13 (+0700) | #29 | 132551
rol.ror.xor.add
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 20:04:55
Messages: 7
Offline
[Profile] [PM]
Gửi bạn only1bit:

Mình xin nói thẳng là bạn HOÀN TOÀN KHÔNG CÓ MỘT CHÚT KHÁI NIỆM VỀ LẬP TRÌNH HỆ THỐNG, ANTI-DEBUG CŨNG NHƯ TẤT CẢ CÁC VẤN ĐỀ LIÊN QUAN.

Bạn không thể phân biệt nổi anti-debug với việc viết obfuscated code.
Bạn không hiểu khái niệm debug và anti-debug.
Bạn không biết những khái niệm sơ đẳng như XOR, AND, ... kể cả packer.
Bạn không biết về PE file, lẫn khái niệm export / import là gì.

Bạn không hiểu bạn đang nói gì.


PS: Lời khuyên chân thành của mình: Hãy tập nhìn ra khỏi miệng giếng.
[Locked] [Up] [Print Copy]
  [Question]   Re: AntiDebug (ForVirus) 25/05/2008 00:23:03 (+0700) | #30 | 132562
vuadapass
Member

[Minus]    0    [Plus]
Joined: 24/08/2006 21:52:13
Messages: 23
Offline
[Profile] [PM] [Yahoo!]
em thấy hình như anh only1bit đem lấy tài liệu ở đâu đó rồi thêm vài lời bình vào . Cái anh vừa viết chẳng liên quan gì đến anti-debug cả .
[Locked] [Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

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