Có chắc chắn là có thể (miễn là tệp DLL không được ký mã hóa), nhưng nó là một thử thách. Bạn có thể làm điều đó với một trình soạn thảo Hex đơn giản, mặc dù tùy thuộc vào kích thước của DLL bạn có thể phải cập nhật rất nhiều phần. Đừng cố gắng để đọc nhị phân nguyên, nhưng thay vì chạy nó thông qua một disassembler.
Bên trong tệp nhị phân đã biên dịch, bạn sẽ thấy một loạt các byte bí truyền. Tất cả các opcodes thường được viết trong assembly như các lệnh như "call", "jmp," vv sẽ được dịch sang tương đương byte phụ thuộc vào kiến trúc máy. Nếu bạn sử dụng bộ tách rời, bộ tách rời sẽ thay thế các giá trị nhị phân này bằng các hướng dẫn lắp ráp để dễ hiểu hơn những gì đang xảy ra.
Bên trong tệp nhị phân đã biên dịch, bạn cũng sẽ thấy nhiều tham chiếu đến các vị trí được mã hóa cứng. Ví dụ, thay vì nhìn thấy "call add()", nó sẽ là "call 0xFFFFF". Giá trị ở đây thường là một tham chiếu đến một lệnh đang ngồi ở một độ lệch cụ thể trong tệp. Thông thường đây là lệnh đầu tiên thuộc về hàm được gọi. Lần khác nó là thiết lập stack/mã dọn dẹp. Điều này thay đổi tùy theo trình biên dịch. Miễn phí
Miễn là các hướng dẫn bạn thay thế có cùng kích thước với hướng dẫn ban đầu, bù trừ của bạn vẫn sẽ chính xác và bạn sẽ không cần phải cập nhật phần còn lại của tệp. Tuy nhiên, nếu bạn thay đổi kích thước của các hướng dẫn bạn thay thế, bạn sẽ cần cập nhật tất cả các tham chiếu đến các vị trí theo cách thủ công (điều này thực sự là tẻ nhạt btw).
Gợi ý: Nếu hướng dẫn bạn thêm là nhỏ hơn so với những gì bạn đã thay thế, bạn có thể đệm phần còn lại bằng NOP để giữ vị trí không bị tắt.
Hy vọng rằng sẽ giúp, và hạnh phúc hack :-)
Nguồn
2013-02-25 21:11:00
Dễ dàng thực hiện trong bộ nhớ nhiều hơn trên đĩa. Và hy vọng bạn không có bất cứ điều gì tương tự như [AuthentiCode] (http://msdn.microsoft.com/en-us/library/ms537359 (v = vs.85) .aspx) hoặc xác thực khác để đảm bảo on- hình ảnh đĩa không bị xáo trộn khi trình tải thông minh hợp lý đang chuẩn bị hình ảnh PE để tải. – WhozCraig
Nếu bạn hoạt động được xuất trong dll, tại sao không chỉ quấn dll? –
Tôi không chỉ nói về các hàm được xuất trong tệp DLL. Điều gì sẽ xảy ra nếu tổng (a, b) là một hàm riêng được sử dụng bên trong Dll? không được xuất khẩu để sử dụng công khai. là nó có thể xác định vị trí thói quen này và thay đổi chúng? – Herno