Cracker Handbook 1.0 part 386 pps

6 75 1
Cracker Handbook 1.0 part 386 pps

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

Thông tin tài liệu

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 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 : 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 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 : 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 : 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 : . OK. Chúng ta sẽ quay trở lại Olly và dừng tại vị trí của lệnh 00 414 02 8 . E8 53BAFFFF CALL Splitter .00 40FA 80 ; Splitter .00 40FA 80 mà chúng ta đã đặt BP. Nhấn F7 để Trace Into và chúng ta đã. from 00 414 02 F . 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. 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

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan