1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 386 pps

6 76 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 347,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nếu như chúng ta tìm được đoạn code mà nhảy tới vị trí này thì rất có thể chúng ta sẽ tìm thấy nơi mà chương trình thực hiện việc Check Serial.. Olly sẽ đưa chúng ta đến vị trí của câu l

Trang 1

Tiếp theo nhấn Show Invalid để tìm xem có hàm nào không hợp lệ không Khà khà không có hàm nào cả, chúng ta nhấn Fix Dump và chọn file SlpitterDump.exe

(ImportREC sẽ lưu thành một file mới với dạng như sau FileName_.exe) Nhấn

Open và đợi đến khi ImportREC thông báo cho chúng ta rằng SplitterDump_.exe

đã được Fix thành công Bây giờ chúng ta cho thực thi file SplitterDump_.exe lên

và kiểm tra xem It works!!:D Vậy là chúng đã Unpack thành công rồi đó, Test lại

file này trong PEiD chúng ta sẽ thấy Olly thông báo như sau : Microsoft Visual C++ 7.0 Vậy là chúng ta đã biết được nó được code bằng gì rồi Bây giờ chỉ còn

mỗi một việc là làm thế nào để sử dụng chương trình hợp pháp đây ? : )

II Patching the Registration Function:

Sau khi chúng ta đã Unpack thành công và có được file đã unpacked là

SplitterDump_.exe Bước tiếp theo chúng ta sẽ tiến hành công việc để Register

Trang 2

chương trình này Như đã nói ở trên, bạn có còn nhớ về chuỗi thông báo mà chúng

ta nhận được khi test thử chương trình này không? Đó chính là chuỗi “Error

Registration Information, Please try again!!”

Giờ chúng ta hãy mở Olly lên và tìm kiếm chuỗi trên thông qua chức năng tìm

kiếm của Olly (Nhấn chuột phải trên màn hình CPU, sau đó chọn Search for > All referenced text strings ) Các bạn sẽ tìm thấy hai vị trí có chứa chuỗi thông báo

này :

Nhưng vị trí mà chúng ta cần lại là vị trí thứ hai Oki , double click vào vị trí thứ hai , Olly sẽ đưa chúng ta quay trở về màn hình chính Tại màn hình chính của Olly, dịch lên trên một chút, chúng ta sẽ thấy tại câu lệnh PUSH phía trên chuỗi mà

chúng ta vừa tìm , có một kí hiệu như sau : “>” Kí hiệu này biểu diễn một entry

point (điểm đột nhập or điểm bắt đầu) của hàm

Nếu như chúng ta tìm được đoạn code mà nhảy tới vị trí này thì rất có thể chúng ta

sẽ tìm thấy nơi mà chương trình thực hiện việc Check Serial Oki bây giờ chúng ta chọn câu lệnh PUSH trên để tìm đến vị trí của câu lệnh sẽ nhảy đến vị trí này, điều này thực hiện hết sức dễ dàng nhờ vào Olly, vì trên cửa sổ Olly sẽ xuất hiện một mũi tên màu đỏ , xác định cho ta biết vị trí của câu lệnh sẽ nhảy tới lệnh PUSH

Thêm vào đó ở cửa sổ Tip window cũng hiện thị thông tin cho chúng ta biết vị trí

của lệnh nhảy ở đâu :

Trang 3

Tại câu lệnh PUSH này , các bạn nhấn chuột phải và chọn Goto > JE from

0041402F Olly sẽ đưa chúng ta đến vị trí của câu lệnh nhảy.Dịch lên một chút các bạn sẽ thấy có một lệnh TEST AL,AL , nó sẽ kiểm tra xem AL có bằng 1 hay

không Nếu như AL không bằng 1 thì tức là câu lệnh nhảy trên sẽ đưa chúng ta tới chỗ của hàm MessageBox và điều này có nghĩa là những thông tin mà chúng ta đã nhập vào là sai

Ta có thể tiến hành Patch tại câu lệnh nhảy ở trên nhưng việc Patch tại vị trí này sẽ không giúp gì cho chúng ta nếu như chương trình lại thực hiện quá trình kiểm tra khi khởi động chương trình.Điều mà chúng ta muốn làm là chúng ta phải Patch tại thủ tục mà tiến hành quá trình Checks Serial.Điều gì đã xảy ra khi chúng ta nhập Name và Serial rồi bấm nút Ok Chương trình sẽ lấy những thông tin mà chúng ta

đã nhập vào sau đó truyền thông tin này cho một hàm.Chúng ta tạm gọi hàm này là

hàm CheckSerial ().Hàm này sẽ tiến hành kiểm tra Serial mà chúng nhập vào và sau đó thiết lập giá trị cho thanh ghi AL là 1 hay là 0 phụ thuộc vào Serial của

chúng ta nhập vào là đúng hay là sai Do đó có thể hàm này sẽ được sử dụng lại rất nhiều lần tại những vị trí khác nhau trong chương trình của chúng ta Nếu như chúng ta có thể Patch được hàm này buộc nó luôn luôn thiết lập giá trị cho thanh ghi AL là 1 thì chúng ta sẽ không phải mất công đi tìm và thay đổi các câu lệnh

nhảy JE thành JNE nữa

Oki như đã nói nãy giờ, các bạn hãy nhìn vào hình minh họa phía trên Các bạn sẽ

thấy trước câu lệnh nhảy là một lời gọi hàm Ta có thể coi đây là hàm CheckSerial () Chọn hàm này và đặt một BP bằng cách nhấn F2 Sau đó nhấn F9 để Run

Trang 4

chương trình , ta nhập lại các thông tin cần thiết để đăng kí sau đó nhấn OK

Chúng ta sẽ quay trở lại Olly và dừng tại vị trí của lệnh 00414028 E8 53BAFFFF CALL Splitter.0040FA80 ; \Splitter.0040FA80 mà chúng ta đã đặt BP Nhấn F7

để Trace Into và chúng ta đã ở trong quá trình kiểm tra Serial của chương trình

Splitter.exe

Oki tại đây chúng ta nhấn F8 để Trace và chúng ta bắt gặp một đoạn kiểm tra sau :

Như các bạn đã thấy, nếu như chúng ta nhập chuỗi Fake User mà độ dài của chuỗi này không > = 5 thì chúng ta sẽ không tiếp tục được quá trình kiểm tra Do đó để chắc rằng nếu như có User nào đó nhập FU có length < 5 thì chương trình vẫn chấp

nhận thì vị trí đầu tiên mà chúng ta cần Patch là tại câu lệnh JGE Chúng ta sẽ change nó thành JMP , có nghĩa là nhập bất cứ User có chiều dài như thế nào cũng

vẫn sẽ tiếp tục quá trình kiểm tra Do đó tại câu lệnh JGE chúng ta nhấn Space Bar

để mở cửa sổ Assemble và chúng ta thay như sau :

Oki tiếp tục dùng F8 để Trace cho tới khi các bạn bắt gặp đoạn code như sau :

Trang 5

Vậy là ở đây chúng ta lại bắt gặp một cấu trúc bao gồm 3 câu lệnh là : CALL > TEST > JUMP Và cụ thể ở đây sau hàm CALL giá trị của AL sẽ được set là 1

hoặc 0 tùy vào Serial chúng ta nhập vào Nếu đúng thì sẽ là 1 và đó là điều mà chúng ta mong đợi Oki , vậy chúng ta sẽ tiến hành Trace Into vào hàm CALL để

tìm hiểu xem giá trị của AL sẽ được thay đổi như thế nào Sau khi nhấn F7 để Trace Into chúng ta nhấn F8 và Trace đi một đoạn ta bắt gặp đoạn check sau :

Như các bạn thấy, nếu như Length của Serial mà chúng ta nhập vào nhỏ hơn 0xA

thì chúng ta sẽ bị thoát khỏi đoạn kiểm tra, mà điều này là chúng ta không muốn

Do đó vị trí tiếp theo mà chúng ta phải Patch là tại câu lệnh nhảy JB ở trên Thực

hiện tương tự như với vị trí Patch thứ nhất, ta sửa như sau :

Trang 6

Tiếp tục dùng F8 để Trace , cho tới khi các bạn bắt gặp đoạn check như sau :

Như các bạn thấy câu lệnh JB ở trên sẽ đưa chúng ta tới câu lệnh XOR khiến cho

giá trị của thanh ghi AL trở thành 0, mà điều này chúng ta không muốn chút nào Vậy phải làm sao bây giờ ? Rất đơn giản , nó muốn cho thành 0 nhưng ta bắt nó

phải là 1, do đó chúng ta sẽ thay câu lệnh XOR thành câu lệnh MOV AL,1 Đây

chính là vị trí thứ 3 mà chúng ta cần thay đổi Giống như hình minh họa dưới đây :

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN