Nhấn CRL+F9 đến RET, sau đó F8 để thấy : Thiết lập breakpoint trên 004659DE, run… ghi ra giấy EAX = CRC Giờ thì nghĩ làm cái gì nữa, ừm: 1, tElock bảo vệ ứng dụng mà không có GetProcAddr
Trang 1Run program, nag đã bị remove
Trang 2Đầu tiên hãy backup file gốc, sau đó mở target với TOPO
OK, ta thêm được 400 bytes trong một section trong file
Thay đổi EP thành 0066BD6
Đầu tiên chúng ta tìm CRC:
Mở file gốc (bằng OLLY), Thiết lập breakpoits trên CloseHandle … sau đo run và chờ đến chỗ được đặt breakpoint Nhấn CRL+F9 đến RET, sau đó F8 để thấy :
Thiết lập breakpoint trên 004659DE, run… ghi ra giấy EAX = CRC
Giờ thì nghĩ làm cái gì nữa, ừm:
1, tElock bảo vệ ứng dụng mà không có GetProcAddress trong
ImportTable Vì thế ch1ung ta phải tìm ra địa chỉ của nó từ ExportTable của
kernel32.dll hoặc bạn dùng LordPe để thêm vào GetProcAddress
2, Theo hình trên, chúng ta có thể ghi “mov, eax,04E468F32 ! jmp 4659DE” tại địa chỉ trả về của hàm CloseHandle đầu tiên để bỏ qua đoạn mã kiểm tra CRC
3, Hook “GetModuleHandle” để patch:
Lời gọi GetModuleHandleA đầu tiên có tham số hModule là NULL trên section mã của tôi, rồi căn cứ trên đoạn mã gốc của ứng dụng, có nghĩa là căn cứ
mã ứng dụng đã được unpack trong bộ nhớ bởi mã của trình packers và đây là thời điểm rất tốt để patch
Đoạn mã sẽ tìm GetProcAddress và hook CloseHandle và GetModuleHandle…
Trang 3Hook CallBack:
Giờ thì run crackme:
Caption đã bị thay đổi
Finish
Chúc Bạn đọc có thêm nhiều kiến thức mới qua bài viết này
Toolcracking
Trang 4Inline patching Asprotect 2.x
ThunderPwr (ARTeam)
0 INTRODUCTION
Bài viết này vừa mới được viết để làm rõ những bước mà phải tiến hành để thực hiện kỹ thuật Inline Patching đối với những chương trình được nén bởi Asprotect;
từ góc độ tổng quát hơn, thì chúng ta có thể hiểu về target hơn với Inline Patching Inline patching không phải là một cách đơn giản mà có thể được dùng để chỉnh sửa hành vi của chương trình, bởi vì kĩ thuật này đòi hỏi một kiến thức tốt về cơ chế bảo vệ của trình nén, nhưng sau từng bước sắp tới có thể dễ dàng mở rộng ra đối với những trình nén khác
Để có thể hiểu rõ hơn về kỹ thuật này, bạn có thể dùng một ví dụ thực, tôi đã thử với Chord Pickout 1.5 Bạn có thể download tại đây www.chordpickout.com
Tất cả các thông tin trong tut này để phục vụ trong học tập nghiên cứu về sự bảo vệ
từ những trình bảo vệ
1 PACKER ANALYSIS (REVERSING STAGE)
Bạn sử dụng trình scanner để kiểm tra chương trình thực thi được nén hay không
Trang 5Đây là việc thường xuyên phải làm cũng như là phải xem xét một cách trực tiếp cấu trúc Entry point giống nhau cho mỗi Asprotect target
Chúng ta phải tìm được OEP của ứng dụng Việc này phụ thuộc vào trình packer Đối với Asprotect chúng ta sử dụng phương thức ngoại lệ và được như sau:
Bây giờ restart target và nhìn vào cửa sổ dump Olly, nhấn Ctr+G và đánh vào địa chỉ: 0x00499914, chúng ta thử xem xét cái vùng nhớ này:
Tất cả địa chỉ từ OEP đều chứa 00 BYTE bởi vì mã của chương trình phải được decompress từ packer stub, sau đó đặt một breakpoint on memory, on write vào trong những btye ở những địa chỉ xác định:
Trang 6Bây giờ nhấn ALT+O để xem Obtions và check tất cả những ngoại lệ (exceptions), sau đó nhấn Shift+F9 Sau một lúc Olly sẽ dừng ở phần đoạn mã này:
Nhấn F8 để thực thi vòng lặp ở trên, sau đó nhìn vào trong cửa sổ dump:
Diassembled view: