Archive for September 4, 2008


Mới sưu tầm được cái script để tự động start vmware trên Linux.

#!/bin/bash

# check if Windows VM is running
VMWIN=$(ps -ef | grep 'wts4.vmx' | grep -v 'grep')

# if string is empty then the VM is not running; start it
if [ -z "$VMWIN" ]; then
echo "Starting Windows VM..."
# vmrun start /virtual2/ts2000/wts4.vmx
else
echo "The Windows VM is already running"
fi

# check if Linux VM is running
VMLINUX=$(ps -ef | grep 'rhel4.vmx' | grep -v 'grep')

# if string is empty then the VM is not running; start it
if [ -z "$VMLINUX" ]; then
echo "Starting Linux VM..."
# vmrun start /virtual2/rhel/rhel4.vmx
else
echo "The Linux VM is already running"
fi

OllyDbg_tut7

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_7

Một cái đầu lạnh để vững vàng, một trái tim đỏ lửa để yêu và làm việc hết mình!

I. Giới thiệu chung

Công việc bề bộn và ngập đầu trong dự án nhưng tôi vẫn ở đây, vẫn dành trọn tình cảm cho những đam mê của riêng mình. Vẫn muốn đóng góp thật nhiều cho dù là nhỏ bé nhất cho ngôi nhà REA thân yêu. Trong sáu phần trước tôi đã tập trung giới thiệu một cách tổng quan những câu lệnh cơ bản và thường được sử dụng nhất. Tuy nhiên vẫn còn rất nhiều các câu lệnh khác nhưng trong khuôn khổ có hạn của bài viết không thể giới thiệu hết được, và thiết nghĩ việc liệt kê hết ra sẽ rất nhàm chán cho nên chi tiết về các câu lệnh sẽ được đề cập tới khi chúng ta gặp phải trong quá trình làm việc với Olly. Trong phần 7 của loạt tuts này sẽ tập trung giới thiệu tới các bạn về lệnh CALL và RET. Xét một cách tổng quan thì đây là 2 lệnh đơn giản, tuy nhiên khi đi vào chi tiết nhiều người thường khó hiểu đặc biệt là những bạn mới làm quen với ASM. Chính vì lý do này mà phần 7 sẽ đi sâu vào giải quyết 2 lệnh này.

II.CALL và RET

Trước tiên chúng ta mở Olly lên và load crackme vào. Tại cửa sổ CPU, bạn nhấn chuột phải và chọn như sau (hoặc nhấn Ctrl + G) :

Download toàn bộ bài viết :

ollydbg_tut7

OllyDbg_Tut6

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_6

I. Giới thiệu chung

Trong phần 5, tôi đã đề cập tới các câu lệnh liên quan tới việc tính toán cũng như các lệnh logic, nói tóm lại chưa có gì đặc biệt hơn và có thể gây nhàm chán với những anh em nào đã quá Pr0 khà khà J. Trong phần 6 của loạt tuts này tôi xin giới thiệu tới các bạn về các câu lệnh so sánh và các lệnh nhảy có điều kiện. Đây là những kiến thức nền tảng cơ bản và quan trọng để có thể đi tiếp các phần tiếp theo. Xin nhắc lại một lần nữa việc cung cấp tất cả các lệnh vượt quá khuôn khổ cho phép của bài viết, cũng như tôi cũng không đủ sức để mà thực hiện điều này. Do đó việc tham khảo thêm các nguồn tài liệu khác để bổ sung thêm kiến thức là điều hết sức cần thiết cho các bạn.

II. Các lệnh so sánh và các lệnh nhảy có điều kiện

Thông thường, khi chúng ta thực hiện việc so sánh là chúng ta so sánh giữa hai đối tượng trở lên và rồi đi đến một quyết định vào đó. Lấy một ví dụ vui : Người A béo hơn người B do đó suy ra người A ăn nhiều hơn người B J.

Trong Cr@cking, khi chúng ta thực hiện so sánh giữa hai toán hạng thì kết quả của việc so sánh này sẽ quyết định rằng chương trình có thực hiện câu lệnh nhảy bên dưới hay là không. Và đây cũng là những kiến thức cơ bản luôn luôn được đề cập đến trong các bài viết hướng dẫn dành cho Newbie (những người mới bắt đầu làm quen với Crack).

Chúng ta biết rằng khi một chương trình yêu cầu ta phải nhập Serial để đăng kí, thì bản thân chương trình đó sẽ quyết định xem liệu rằng cái dãy serial mà chúng ta nhập vào kia có thỏa mãn (đúng) hay không thỏa mãn thông qua việc tính toán và tiến hành các câu lệnh so sánh. Dựa trên kết quả của việc so sánh này chương trình sẽ đưa ra quyết định có thực hiện lệnh nhảy hay là không, điều này tùy thuộc vào chúng ta có nhập serial không, serial của chúng ta nhập vào đúng hay sai ?

1. Lệnh CMP :

Đây là câu lệnh so sánh rất thường gặp trong quá trình chúng ta phân tích chương trình, các điều kiện nhảy thường được cung cấp bởi lệnh CMP này. Tổng quát câu lệnh CMP có dạng như  sau :

CMP Đích, Nguồn

Lệnh này thực hiện việc so sánh toán hạng Đích với toán hạng Nguồn bằng cách lấy toán hạng Đích trừ đi toán hạng Nguồn. Có thể nói lệnh này tương đương với lệnh SUB nhưng nó khác với lệnh SUB ở chỗ kết quả không được lưu lại (tức là toán hạng đích không bị thay đổi). Tác dụng chủ yếu của lệnh CMP là tác động lên các cờ. Một điểm chú ý khác nữa là các toán hạng của lệnh CMP không thể cùng là các ô nhớ. Vậy tổng kết lại lệnh này thường được dùng để tạo cờ cho các lệnh nhảy có điều kiện.

Dưới đây là bảng trích dẫn các cờ chính theo quan hệ Đích và Nguồn khi so sánh 2 số không dấu :

CF

ZF

SF

Đích = Nguồn

0

1

0

Đích > Nguồn

0

0

0

Đích < Nguồn

1

0

1

Download toàn bộ bài viết :

ollydbg_tut6

OllyDbg_Tut5

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_5

I. Lời nói đầu

Khà khà lâu quá rồi tí nữa thì quên mất cái pr0j3ct về Olly còn đang dang dở. Cũng lâu quá rồi nên chẳng nhớ những bài trước mình viết những gì và viết đến đâu, hôm nay lục lại thì thấy mình mới viết đến bài thứ tư :|, chà chậm quá. Tối nay rỗi rãi và cũng muốn tránh tình trạng Pending quá dài, tôi viết tiếp phần 5 trong loạt tuts về Ollydbg mà tôi ấp ủ. 0k13! L3t’s R0ck w1th m3:))

II. Giới thiệu chung

Trong phần trước của bài viết tôi đã đề cập đến những câu lệnh hay dùng nhất, chung nhất khi chúng ta làm quen với Olly. Trong phần 5 này tôi sẽ tiếp tục với các câu lệnh liên quan tới việc tính toán cũng như các lệnh logic, nói tóm lại chưa có gì đặc biệt hơn và có thể gây nhàm chán với những anh em nào đã quá Pr0 khà khà :). Xin nhắc lại một lần nữa việc cung cấp tất cả các lệnh vượt quá khuôn khổ cho phép của bài viết, cũng như tôi cũng không đủ sức để mà thực hiện điều này. Do đó việc tham khảo thêm các nguồn tài liệu khác để bổ sung thêm kiến thức là điều hết sức cần thiết cho các bạn.

III. Các lệnh dùng trong việc tính toán

1. Lệnh INC và DEC :

INC (Increment) được dùng để cộng thêm 1 vào nội dung của một thanh ghi hay một ô nhớ. DEC (Decrement) thực hiện công việc ngược lại, trừ 1 từ nội dung của một thanh ghi hay ô nhớ. Để minh họa cho hai câu lệnh này bạn load crackme vào trong Olly và edit như sau :

Download bài viết đầy đủ:

ollydbg_tut5

OllyDbg_Tut4

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_4

I. Lời nói đầu

Hà Nội trời lạnh quá, ngoài trời mưa phùn, quàng khăn đi găng tay cộng thêm cái mũ mà vẫn thấy lạnh. Đêm nay rảnh rỗi tôi lại tiếp tục phần bốn trong loạt tut về Ollydbg như đã hứa với các bạn. Trong bài viết trước tôi đã tập trung giới thiệu ý nghĩa của các thanh ghi, các cờ thường được sử dụng trong quá trình crack hay reverse chương trình, cũng như quan sát thấy các cờ thay đổi trạng thái như thế nào khi ta thực thi một câu lệnh có tác động đến cờ. Trong phần bốn này sẽ đề cập tới những câu lệnh Asm cơ bản, cách thức chúng thi hành. Như những gì chúng ta đã làm trong các phần trước, sẽ không có gì dễ hiểu hơn là khi tìm hiểu về một công cụ chúng ta tiến hành thực hành luôn trên công cụ đó để kiểm nghiệm những kiến thức mà chúng ta tiếp thu được trong quá trình đọc tài liệu. Tôi sẽ cố gắng đúc kết lại sao cho các bạn dễ dàng tiếp cận nhanh nhất có thể… 0k13! L3t’s R0ck w1th m3 J

II. Giới thiệu chung

Tập lệnh của bộ vi xử lý có đến hơn trăm lệnh, trong đó có các lệnh được thiết kế dành riêng cho các bộ vi xử lý cao cấp. Trong bài viết này tôi chỉ đề cập đến những câu lệnh hay dùng nhất, chung nhất mà thôi. Việc cung cấp tất cả các lệnh vượt quá khuôn khổ cho phép của bài viết, cũng như tôi cũng không đủ sức để mà thực hiện điều này. Do đó việc tham khảo thêm các nguồn tài liệu khác để bổ sung thêm kiến thức là điều hết sức cần thiết cho các bạn.

III. Chi tiết về các câu lệnh ASM hay dùng

1. NOP (No Operation) :

Cái tên của nó đã cho bạn thấy được ý nghĩa. Lệnh này không thực hiện một công việc gì cả ngoại trừ việc tăng nội dung của thanh ghi EIP, nó không gây ra bất kì thay đổi nào trong thanh ghi, stack hoặc memory. Chính vì ý nghĩa này của nó mà câu lệnh này thường được dùng vào mục đích hủy bỏ bất kì câu lệnh nào (không cho lệnh đó thực hiện), bằng cách ta thay thế câu lệnh sắp thực hiện bằng lệnh NOP chương trình sẽ vẫn thực thi nhưng thay vì thực thi câu lệnh gốc thì giờ đây do được thay thế bằng NOP nên nó sẽ không làm gì cả. Đó là lý do tại sao các bạn hay thấy người ta sử dụng NOP (ví dụ như :  tôi muốn loại bỏ một thông báo nào đó, để làm được điều này tôi thay thế lệnh Call đến thông báo bằng lệnh NOP, vậy là thông báo đó sẽ biến mất J ).  Okie, mở Cruehead crackme trong Olly, ta có như sau :

Download bài viết đầy đủ tại đây:

ollydbg_tut4

Regards

OllyDbg_tut3

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_3

I. Lời nói đầu

Hà Nội trời lạnh nhưng cũng không thể át được không khí hừng hực lửa tại triển lãm Giảng Võ.Hàng nghìn con người hò hét, lắc giật xé tan bầu không khí lạnh lẽo. Sau một đêm “phê” cùng R0ck, toàn thân mệt nhoài, cổ đau đến hôm nay mới đỡ tôi lại tiếp tục dành thời gian để hầu tiếp các bạn phần ba trong loạt tut về Ollydbg. Phần ba này sẽ tập trung giới thiệu tới các bạn ý nghĩa của các thanh ghi, các cờ thường được sử dụng trong quá trình crack hay reverse chương trình. Tôi sẽ cố gắng đúc kết lại sao cho các bạn dễ dàng tiếp cận nhanh nhất có thể… 0k13! L3t’s R0ck w1th m3 J

II. Giới thiệu chung

Thông tin được lưu giữ bên trong bộ vi xử lý trong các thanh ghi. Các thanh ghi được phân loại theo chức năng của chúng. Bộ vi xử lý dựa vào sự trợ giúp của các thanh ghi để thực thi một chương trình. Các thanh ghi được phân loại như sau : thanh ghi dữ liệu chứa dữ liệu cho một thao tác, thanh ghi địa chỉ chứa địa chỉ của lệnh hay của dữ liệu và thanh ghi trạng thái lưu trạng thái hiện thời của bộ vi xử lý. Đối với bộ xử lý 8086 có bốn thanh ghi dữ liệu công dụng chung, các thanh ghi địa chỉ được chia ra làm các thanh ghi đoạn, thanh ghi con trỏ, thanh ghi chỉ số; thanh ghi trạng thái còn được gọi là các cờ. Khi mới làm quen với các thanh ghi tôi khuyên bạn không nên học thuộc hết các chức năng của các thanh ghi liền một lúc, các bạn nên làm quen với các thanh ghi dần dần trong quá trình học cũng như trong lúc thực hành với Ollydbg.

III. Chi tiết về các thanh ghi và công dụng

1. Thanh ghi ESP :

Thanh ghi đầu tiên mà tôi muốn giới thiệu tới các bạn đó chính là thanh ghi ESP (con trỏ ngăn xếp – Stack pointer). Thanh ghi này luôn trỏ tới đỉnh hiện thời của ngăn xếp. Các bạn xem hình minh họa dưới đây :

Download bài viết đầy đủ tại đây :

ollydbg_tut3

OllyDbg_tut2

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_2

I. Lời nói đầu

Chào mọi người, sau tut đầu tiên của tôi giới thiệu tới các bạn về Ollydbg, bẵng đi một thời gian do công việc bận rộn tôi đành gác bút chưa thể viết tiếp được. Bây giờ mọi việc có vẻ ổn định rồi, tôi sẽ dành chút thời gian để tiếp tục bộ tut này. Mặc dù có bạn đã làm tiếp công việc của tôi là dịch và viết đến tut thứ 16, nhưng tôi sẽ vẫn viết lại theo cách viết và phong cách của tôi. Đây vừa là những bài viết mà tôi chia sẻ đến các bạn cũng đồng thời là việc tôi đúc kết và lưu trữ những gì mình đã làm được. Ở phần trước sau khi các bạn đã có một cái nhìn tổng quan nhất về công cụ Ollydbg về các thành phần cũng như chức năng chính của nó, thì trong phần thứ hai này tôi sẽ đề cập đến việc sử dụng các hệ thống số trong Olly, thêm vào đó là một chút kiến thức cơ bản về Stack. Okie, L3t’s G0!!

II. Các hệ thống số

Có ba hệ thống số được sử dụng nhiều nhất đó là Hệ nhị phân, Hệ mười và cuối cùng là hệ thập lục phân.Chúng ta sẽ đi lần lượt định nghĩa về từng hệ thống này.

Hệ nhị phân : Trong hệ đếm nhị phân cơ số là 2 và nó chỉ có hai chữ số là 0 và 1.

Hệ mười (thập phân) : Có thể nói đây là một hệ thống được chúng ta sử dụng nhiều nhất trong đời sống hàng ngày.Hệ này bao gồm mười chữ số bắt đầu từ 0 đến 9. Hệ đếm này là hệ đếm mà chúng ta quen thuộc nhất.

Hệ mười sáu : Các số dưới dạng nhị phân thường là dài và khó nhớ. Việc chuyển đổi các số thập phân sang nhị phân thường khó. Khi chúng ta viết chương trình hợp ngữ chúng ta thường sử dụng cả hai hệ đếm là : nhị phân và thập phân, và cả một hệ đếm thứ ba là hệ 16 hay còn gọi tắt là số hex. Số hex cho phép chúng ta chuyển đổi một cách dễ dàng sang số ở hệ nhị phân và ngược lại.

Note : Để đổi số hex sang số nhị phân chúng ta chỉ việc biểu diễn các chữ số của nó dưới dạng nhị phân. Còn đổi số nhị phân sang số hex, thì ta nhóm 4 chữ số của số nhị phân lại theo thứ tự lần lượt từ phải qua trái. Sau đó chuyển thành số hex tương ứng.

Hệ đếm hex là hệ đếm có cơ số 16 cho nên các chữ số của nó là : 0-9, A-F. (Vì hết các kí hiệu chữ số để biểu diễn nên người ta dùng thêm các chữ cái để biểu diễn: các chữ cái từ A – F tương ứng biểu diễn các số từ 10 – 15).

Khi bạn muốn làm quen với công việc debug trong Olly thì điều đầu tiên tôi khuyên bạn nên làm quen với các hệ thống số ở trên, Olly chủ yếu sử dụng hệ 16. Bên cạnh đó các bạn cũng phải học các phương pháp chuyển đổi đơn giản giữa các hệ số với nhau để tiện cho quá trình bạn làm việc. Có thể các bạn sẽ cho lời tôi nói là thừa bởi vì ngày nay có quá nhiều công cụ hỗ trợ cho chúng ta làm việc này, nhưng theo tôi đây vẫn là những kiến thức tiên quyết vì công cụ chỉ là hỗ trợ để chúng ta làm việc nhanh chóng mà thôi, còn muốn hiểu sâu, rộng thì chúng ta không nên bỏ qua những chi tiết dù là vụn vặt nhất.

Ở đây trong bài viết này, tôi coi như các bạn đã tự mình trang bị những kiến thức cơ bản rồi. Do đó để dễ dàng hơn cho chúng ta khi làm việc với các hệ thống số, Windows cung cấp cho chúng ta một công cụ khá mạnh mà đôi khi ít người để ý mà thậm chí có khi còn không biết là nó hỗ trợ cho chúng ta các tính năng liên quan đến việc chuyển đổi J, đó chính là tiện ích Calculator. Có nhiều cách thức để mở chương trình này nhưng cách nhanh nhất là vào menu Run và gõ Calc.exe (thậm chí chỉ cần gõ Calc cũng mở được).

Download bài viết đầy đủ:

ollydbg_tut2

Best Regards

kienmanowar