Run program, nag đã bị remove. Đầ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… Hook 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. Inline 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 Đâ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: Bâ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: . vào cửa sổ dump Olly, nhấn Ctr+G và đánh vào địa chỉ: 0x 004 99 914 , 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. lập breakpoint trên 00 4659DE, 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. 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 00 66BD6. Đầu tiên chúng ta tìm CRC: Mở file gốc (bằng OLLY), Thiết