Trao đổi với tôi

http://www.buidao.com

4/5/10

[Reverse] How to write a program to steal the key

How to write a program to steal the key
by dqtln

Victim : ImTOO WMA MP3 Converter 2.0.36 Build 713
Home : www.imtoo.com
Tool : OllyDbg 1.10 , masm32 , WinAsm Studio

Phần tìm đoạn mã kiểm tra tương đối dễ nên mình nói sơ thôi
Nhấn F9 để chạy chương trình , nhập name và serial , ta sẽ nhận được thông báo "Invalid registration info!" ... Chuyển qua OllyDbg , nhấn F12 , nhấn Alt+K , nhấn đúp lên hàm MessageBoxExA , đặt breakpoint ... Nói chung Ctrl+F9 để về cuối hàm rồi F8.. , cuối cùng ta thấy như sau :

0035858B E8 D0F4FFFF CALL UILib71.?SaveRegInfo@ImRegDlg@@IAEX>
00358590 E8 BBF8FFFF CALL UILib71.?IsValidRegInfo@ImRegDlg@@S> //hàm kiểm tra
00358595 85C0 TEST EAX,EAX
00358597 75 49 JNZ SHORT UILib71.003585E2

Đặt breakpoint tại 00358590 , đi vào hàm kiểm tra này , F8 trace cho đến khi thấy như sau :

00358088 FF15 24273600 CALL DWORD PTR DS:[<&MFC71.#2902>] ; MFC71.7C146AB0
0035808E 83F8 27 CMP EAX,27 //serial phải là 39 ký tự
00358091 0F85 AE030000 JNZ UILib71.00358445

Sau khi thỏa điều kiện serial 39 ký tự , ta tiếp tục trace cho đến 003583B9 , nhìn thanh ghi ECX ta sẽ thấy serial đúng ... Như vậy , ta cần viết 1 loader có chức năng chạy chương trình , đặt điểm ngắt tại 003583B9 , và show thanh ghi ECX vào thời điểm đó

Để đặt điểm ngắt tại một địa chỉ , ta viết chương trình sửa 2 bytes tại đó thành EB FE , dòng lệnh tại đó sẽ thành lệnh nhảy đến chính nó
003583B9 -EB FE JMP SHORT UILib71.003583B9

Chép loader vào thư mục cài đặt , chạy loader
Nhấn nút Generator , victim sẽ chạy
Nhập name và serial (39 ký tự bất kỳ) , OK , victim tắt
Cửa sổ loader sẽ hiện ra serial đúng

Mã nguồn tương đối ngắn gọn , các bạn xem mã nguồn và target trong file đính kèm bài viết này

dqtln 05 June 2007



Download:

http://www.esnips.com/doc/92062c3e-d2fa-42d5-b142-56d3af82c4f7/Tutorial_0141_How-to-write-a-program-to-steal-the-key