Thứ Năm, 4 tháng 12, 2014

SoftwareShield 5.2 (2014-11-18) Cracked

An early christmas gift for you. SoftwareShield 5.2 cracked ;)

Note:
The author is not responsible for the bad usage of this product.
This is for EDUCATIONAL AND EVALUATION PURPOSES ONLY.
Use at your own risk.

I didn't use this software at all. And i'm the only tester who tested this patcher. So this release may not work or not working fully for you ;)

Download:
http://mir.cr/9A4WAAI4

Pass: "none :P" (without ")

Thứ Hai, 22 tháng 9, 2014

Solution for Greedy_Fly's CrackMe v1.2

1 crackme khá thú vị nhưng không quá khó. Chi tiết về crackme xem tại đây

Tuy nhiên tôi đã upload crackme lên google drive cho tiện download (dành cho những ai không có tài khoản trên crackmes.de hoặc làm biếng đăng nhập trên crackmes.de)


Tool: OllyDBG, Keygen Assistant

Nếu bạn scan crackme bằng PEiD hay RDG Packer Detector thì sẽ cho kết quả là AsPack (Kết quả giả). Nguyên nhân vì một đoạn code thú vị trông giống AsPack được chạy trước khi đến code thật sự của chương trình. Đoạn code thật bắt đầu từ địa chỉ 004025A1. Bạn có thể dùng LordPE chỉnh lại EP cho đỡ rắc rối cũng được hoặc không chỉnh cũng không vấn đề gì :)

Dùng plugin Krypto analyze của PEiD để biết ta sẽ phải đối đầu với những gì :)


Dùng String search không cho kết quả khả quan lắm. Lướt qua các hàm API mà chương trình dùng thấy có hàm GetDlgItem thấy nghi lập tức đặt breakpoint tại API này. Chạy Crackme và nhập vào fake serial





Nhấn check OllyDBG break tại bp mà ta đã đặt trước đó




Toàn bộ code hình trên làm nhiệm vụ như sau
- Lấy Handle của textbox bằng API GetDlgItem
- Lấy địa chỉ API SendMessageA bằng API GetProcAddress và LoadLibraryA
- Gọi SendMessageA với Message là WM_GETTEXT

Serial được lưu vào địa chỉ 4041D8

Các đoạn code tiếp theo có chức năng như sau
- CALL 00401119: Đảo ngược chuỗi serial mà ta nhập vào
- CALL 00401150: Lấy độ dài chuỗi serial mà chúng ta nhập vào
- CALL 004011AA: Thực hiện SHA-1 chuỗi serial đã đảo ngược. Kết quả chuỗi hash SHA-1 này được lưu ở địa chỉ 4041F8.

Sau đây là những dòng code tôi đã comment rõ ràng hơn.




Vậy là crackme đã tạo một chuỗi SHA-1 từ serial mà chúng ta nhập vào. Ý tưởng ở đây là crackme sẽ so sánh chuỗi SHA-1 mới tạo được với một chuỗi hardcode SHA-1 có sẵn. Nhiệm vụ bây giờ của chúng ta là tìm ra chuỗi hardcode SHA-1 được dấu trong crackme. Tiến hành trace các đoạn code tiếp theo ta sẽ tới được đoạn check đầu tiên.



Không khó để đoán ra đoạn hardcode SHA-1  bắt đầu bằng 9DD06A22. Tiếp tục tới đoạn check tiếp theo




Một đoạn check đơn giản sử dụng xor và phép trừ.

(73C82B40h - X) xor 4A2C6D45h = 79B00F88h

==> X =73C82B40h - (79B00F88h xor 4A2C6D45h) = 402BC873h

Vậy đoạn tiếp theo của chuỗi hardcode SHA-1 là 402BC873

Đoạn code tiếp theo:





Có vẻ khá rắc rối nhưng thật ra chỉ là 2 phép tính xor đơn giản
Gọi đoạn hardcode SHA-1 tiếp theo có dạng là XY (X, Y chiếm 2 byte)

Y xor D312h= D9A8h
===> Y = 0ABAh

X xor 80E4h = 3600h
===> X = B6E4h

Vậy đoạn tiếp theo của chuỗi hardcode SHA-1 là B6E40ABA


Code đoạn check cuối cùng



Đoạn cuối cùng sẽ sử dụng NEWDES để kiểm tra serial. Đoạn SHA-1 còn lại sẽ được mà hóa với key là "Unregistered!!!" rồi so sánh với 26377DDF302D922E. NEWDES là kiểu mã hóa đối xứng với key mã hóa và key giải mã là một. Dùng Keygen Assistant để thực hiện giải mã ta được phần cuối cùng



Đoạn SHA-1 hoàn chỉnh "9DD06A22402BC873B6E40ABA4E390DB9E0E00F20"

Sử dụng các trang SHA-1 crack hoặc đơn giản hơn chỉ cần paste dòng hash vào google và nhấn search. Kết quả tìm kiếm dẫn đến địa chỉ sau

http://sha1.znaet.org/sha1/9dd06a22402bc873b6e40aba4e390db9e0e00f20

Vậy serial chúng ta cần tìm là zaq12345



Lưu ý: SHA-1 không thể dịch ngược được. Vì đây là một crackme nên tác giả cố tình chọn một serial thông dụng sẵn có trong bộ từ điển khổng lồ của các trang SHA-1 crack. Nếu tác giả chọn serial phức tạp như "$#&!%#hsdg236" thì đến 10 đời cũng chả crack nổi :D

Tut kết thúc ở đây. Chúc bạn một ngày tốt lành :)

Best thank to: Jagged1600 ( Long time to see you!!! )

Thank to:
All REPT, Cin1, SND, Tuts4you, STC, REiS, URET,.... members

Elvis
Quy Nhơn 22/09/2014

Thứ Bảy, 3 tháng 5, 2014

[write up] 0x3004.wargame.vn - ulock challenge

CTF 0x3004 gameover - cũng là lúc viết write up. Các write up cũng bắt đầu tràn lan trên Internet. Tôi cũng ko ngoại lệ tranh thủ viết 1 bài để đời

Write up ulock challenge
Level: 2
Tool: OllyDBG, Calc

----> Download This Challenge Here <----


Scan bằng bất kì packer detector nào ( riêng tôi vẫn dùng PEiD) được biết crackme viết bằng ASM. Load vào OllyDBG và run (quá khỏe không hề có Anti Debug)


Crackme có EP là 401000h. String của Unlock code cũng không hề bị dấu. Với tôi mọi chuyện cho đến bây giờ vẫn thuận buồm xuôi gió



Crackme dùng API GetDlgItemTextA để lấy chuỗi unlock code mà chúng ta nhập vào. Đồng thời API GetDlgItemTextA cũng trả về giá trị độ dài của chuỗi mà nó lấy đc. Code ở đây như sau
- Lấy Unlock Code mà chúng tôi nhập vào
- So sánh độ Unlock Code với 7
- Nếu lớn hơn 7 sẽ bypass bảng thông báo "Sai Unlock Code"

Quá đơn giản. Tôi nhập 12345678 và nhấn Unlock. Kết quả khá mĩ mãn. Tôi đã qua được first check là Unlock Code. Tiếp theo là fish serial cho name 0x3004. Tôi nhập Name là 0x3004 và serial bất kì --> Check --> Crackme crash

Có lẽ tôi bỏ sót điều gì đó chăng?? Vậy là Unlock Code không đơn giản như tôi nghĩ. Xem lại sau khi check độ dài chuỗi unlock crackme còn thực hiện 3 hàm call mà tôi đã chủ quan không để ý. Tôi trace lại kĩ và xem xét từng hàm call một

- Hàm Call thứ nhất "CALL 004012CD"

Hàm Call này thực hiện nhiệm vụ tính toán một giá trị từ Unlock code mà tôi nhập vào lưu vào 1 biến (tạm gọi là biến key. Biến này có giá trị 1 byte). Vậy tôi dự đoán crackme sẽ giải mã 1 đoạn code của chính nó dựa trên giá trị của biến key này. Việc Crackme bị crash lúc nãy có thể được giải thích rằng do tôi nhập sai Unlock Code --> sai key --> code được giải mã sai dẫn đến crash khi thực thi.

- Hàm Call thứ hai "CALL 004012F7"


1 vòng lặp xor 1 đoạn data (bắt đầu tại 4032A5h và kết thúc tại 4032BBh) của crackme cho biến key. Như vậy là tôi đã dự đoán đúng. 1 đoạn code của crackme sẽ được giải mã bằng thuật toán xor cho biến key


- Hàm call thứ ba "CALL 00401348" hực hiện việc enable/disable các textbox và button. Hàm này không quan trọng lắm.

Như vậy sau khi đã trace qua đoạn code mà tôi bỏ lỡ, vấn đề đặt ra ở đây là tìm ra được xor key làm sao cho phù hợp để có thể giải mã đoạn code kia. Ý tưởng đầu tiên của tôi là thực hiện brute force. 1 byte có giá trị từ 0 đến 255. Nếu tôi lượt bỏ giá trị 0 đi vẫn sẽ còn 255 trường hợp. Đối với tôi như vậy cũng là quá nhiều nên có lẽ sẽ dùng ý tưởng này như là kế sách cuối cùng. Ý tưởng tiếp theo của tôi là xác định/ dự đoán 1 số đoạn code có trong hàm bị mã hóa, từ đó suy ngược ra xor key tương ứng (có vẻ khá thi hơn). Thường thì hàm đầu tiên của 1 đoạn code thường là "PUSH EBP" có mã hex là 55h. Sau khi đã dự đoán đc code tôi tiến hành xor ngược lại với code đã mã hóa

55h xor 75h = 25h

Vậy xor key có thể là 25h. Tôi nhập lại Unlock code (bất kì) sau đó đổi giá trị key thành 25h trước khi crackme dùng biến key để decrypt code


Chạy hàm call decrypt code được


Code đã được giải mã. Vậy xor key đến thời điểm này chắc chắn là 25h. Đến lúc này tôi tiến hành fish crackme như bình thường với name là 0x3004. Đặt bp tại các vị trí trong hình có thể fish được serial 1 cách dễ dàng.



Fish được serial cũng chính là flag "21137D5FCAAC07F9"

- Game Over -

Thanks to:
Nguyễn Phương Nam, Nguyễn Hữu Thọ, LoveMagic (idid231), Dungvit, Levis
Tuts4you, REPT, REA, Cin1, URET, REiS, Crackmes.de
............
And YOU!

Quy Nhơn 1 ngày nóng
03/05/2014
Elvis