--> trong quá trình bảo vệ, protector đã "cut" các byte này từ file gốc, rồi đổi tên nó thành "locked" ,sau đó tạo 1 loader để quản lý phần đăng kí và inject lại các byte đó vào khi file
Trang 1LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to
PROCESS_INFORMATION
);
Tui nghĩ ko cần phải giải thích gì thêm nhé
13 Nhấn "run" lần nữa và lần nữa, tất cả đều break ở WriteProcessMemory
Backtracing (chắc là trace wa nhiều lần RETN để về đoạn code chính), chúng ta
thấy 1 lệnh nhảy :
Code:
The WriteProcessMemory function writes memory in a specified process The entire area to be written to must be accessible, or the operation fails
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to LPVOID lpBaseAddress, // address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // actual number of bytes written
);
Xem thêm 1 vài hình nữa:
Vậy là có cái nhìn tốt hơn rồi : WriteProcessMemory chỉ write vào 1 byte ở mỗi
Trang 2lần, ở địa chỉ bắt đầu là 429136
Vùng buffer lần lượt chứa 3 địa chỉ, ở mỗi lần sẽ ghi đè byte từ process này qua process kia Bạn có thể dòm vào cửa sổ Dump để xem các byte nào được write nếu muốn
14 Xóa BP ở WriteProcessMemory đi (Tui cũng đã đặt thêm vài BP, ví dụ như OpenProcess nhưng break ở đó ko có thêm thông tin gì nên tui xóa hết òi)
Bấm F9 và break ở ResumeThread
Code:
The ResumeThread function decrements a thread's suspend count When the
suspend count is decremented to zero, the execution of the thread is
resumed
DWORD ResumeThread(
HANDLE hThread // identifies thread to restart
);
Chắc ko cần giải thích thêm > nhấn F9 và game chạy
15 Suy nghĩ tí nào Điều này có thể hiểu là : loader "Sample Game.exe" sẽ chạy
"Sample Game.exe.locked" và suspend thread Bắt đầu patch vào ở 429136 cho đến khi hoàn thành thì resume thread và game run ngon lành
16 Ai đó có thể nghiên cứu thêm, nhưng giờ chúng ta hãy thử trong Olly Load Sample Game.exe.locked và chọn > Go To > 429136
Chaaa ! tất cả đầu là byte 0, từ 429136 cho đến 429534 Ọc ọc, nhiều byte quá đi mất ! Nếu không có mấy byte ở đây, game sẽ crash > trong quá trình bảo vệ, protector đã "cut" các byte này từ file gốc, rồi đổi tên nó thành "locked" ,sau đó tạo
1 loader để quản lý phần đăng kí và inject lại các byte đó vào khi file được bảo vệ cho phép
17 Giờ hãy chạy game (ở ngoài Olly) rồi attach vào Olly file Sample
Game.exe.locked Goto tới 429136 > tất cả byte đã được nạp vào và code trông tốt hơn rồi đấy
18 Tô đen tất cả các byte từ 429136 đến 429535 > chọn binary copy Sau đó tắt
Trang 3hết đi
19 Đổi tên ".locked" thành tên file gốc exe rồi load nó vào Olly > Go to tới
429136 > Binary paste các byte đã copy vào Save lại file đó
20 Xóa file loader đi Chạy game Tất cả đầu tốt Another one bites the dust ;)
Phụ chú:
Sau khi viết bài này, tui thử protect vài file nữa, và tốt rồi, tui đã protect được
winasm studio executable > thành công ! Tui cũng thử protect RadAsm.exe của
tui > ngon lành !!! Vậy là tui đã ko may mắn với các file kia? lol Tuy nhiên, Tui vẫn chưa hiểu cái option stolen bytes để làm gì nữa Chọn hay ko chọn cũng như nhau àh
Nếu bạn muốn thử cái protector này thì hãy lưu ý là nó sẽ ghi đè lên file gốc khi tạo loader nếu option backup ko được check
Xem lại hình đầu tiên để biết site của protector này
<< END OF TRANSLATION >>
Big thanks to Lena151
Best regard
Trickyboy(reaonline.net)
Bảo vệ resource của exe,dll file
I)Giới thiệu:
Thông thường resource của một file exe hay dll nằm trong section rsrc hoặc rsrc Những resource này có thể được chỉnh sửa bởi 1 số chương trình như: ResHacker, ExeScope và TGT soft cũng có 1 chương trình chỉnh sửa resource(tui chưa thử), nghe nói có thể chỉnh sửa resource ngay cả khi chương trình đã được protect Ngoài ra reverser hay cracker cũng có thể chỉnh sửa resource chỉ bằng 1 chương trình hex edtior
Mục đích của bài này là nói về cách thức để chống lại các chương trình như
ResHacker, ExeScope
Trang 4Tiếp theo đó là chống lại việc chỉnh sửa resource bằng hexeditor Phương pháp mà tui đề cập đến hiện đang được một số protector, compressor sử dụng như asprotect, upx
Ở bài này tôi chỉ đề cập đến phương diện lý thuyết, nếu có thơi gian rảnh, tôi sẽ áp dụng vào lập trình để minh họa
Yêu cầu là bạn đã nắm 1 số kiến thức về PE file, đặc biệt là phần cấu trúc của resource
II)Cấu trúc của resource section:
IMAGE RESOURCE DIRECTORY
Type
IMAGE RESOURCE DIRECTORY
NameID
IMAGE RESOURCE DIRECTORY
Language
IMAGE RESOURCE DATA ENTRY
IMAGE RESOURCE DIRECTORY
STRING
Dữ liệu thực sự của các resource
1)IMAGE RESOURCE DIRECTORY Type:
xác định xem có bao nhiêu lọai resource trong file, ta có thể biết resource gồm những loại nào dựa vào ID của nó
Xem hình bên dưới:
Trang 5Bạn có thể thấy tương ứng với Number ofID Entries là 8 sẽ có 8 loại resource ở đây
Ví dụ, với ID =3 có nghĩa đây là Icon resource, ID=4 là Menu resource
2)IMAGE RESOURCE DIRECTORY NameID
Phần này sẽ xác định số lượng mỗi loại resource , ví dụ tương ứng với resource Icon thì chương trình có thể có 1 hay nhiều icon
3) IMAGE RESOURCE DIRECTORY Language:
Phần này sẽ xác định thông tin của từng resouce cụ thể
Ví dụ thông tin của ICON 1, ICON 2, ICON 3 rồi đến MENU 1, MENU 2 cho đến hết