Chúng tôi có một dự án với nhiều tệp dll được tải khi ứng dụng bắt đầu. Các baseaddresses của các tập tin dll làm chồng lên nhau để hình ảnh bộ nhớ được di dời. Có khả năng để gán các baseaddresses tự động hoặc một cách để tính toán một baseaddress "tốt" cho mỗi tập tin dll?Làm cách nào để đặt/baseaddress thành giá trị "tốt"?
Trả lời
Bạn có thể sử dụng tiện ích rebase mà tàu với SDK nền tảng và với Visual studio Tôi nghĩ rằng để thiết lập địa chỉ cơ sở của một bó toàn bộ DLL nạp bởi appliction
Bạn cung cấp rebase với một danh sách các DLL tạo nên chương trình của bạn, không bao gồm các dll hệ thống, sau đó thực hiện tải giả của tất cả các tệp DLL và gán cho chúng các địa chỉ cơ sở mới.
Điều này có thể được thực hiện như một phần của bước xây dựng cuối cùng.
Có một bài viết Dr Dobbs trên rebasing here và một bài báo của Microsoft trên rebasing nói chung here
Nếu bạn đang phân phối các DLL, bất kể cách bạn thiết lập địa chỉ cơ sở của bạn, luôn luôn có một rủi ro mà DLL khác không được viết bởi bạn được tải tại địa chỉ đó đã có (ví dụ như global hooks DLLs).
Ngoài ra nếu bạn đang xây dựng cho Vista bạn thực sự nên sử dụng/DYNAMICBASE để cho phép ASLR để kick trong
Dưới đây là liên kết MSDN:. http://msdn.microsoft.com/en-us/library/bb384887.aspx.
- 1. Làm cách nào để bạn đặt giá trị kép thành "không có giá trị"
- 2. Làm cách nào để chuyển đổi giá trị Integer thành giá trị thập phân?
- 3. Làm cách nào để chuyển đổi giá trị NSUInteger thành giá trị int trong mục tiêuC?
- 4. Python - cách tốt nhất để đặt cột trong mảng 2d thành giá trị cụ thể
- 5. jQuery/Javascript - Làm cách nào để chuyển đổi giá trị pixel (20px) thành giá trị số (20)
- 6. Làm cách nào để bạn đặt giá trị của một mảng thành các giá trị của mảng khác trong Java?
- 7. Làm cách nào để đặt giá trị trường mặc định thành giá trị của trường khác trong mô hình Django?
- 8. Làm cách nào để truy xuất giá trị thành phần JSF bằng cách sử dụng EL?
- 9. Làm cách nào để chuyển đổi chuỗi thành Giá trị TColor?
- 10. Làm cách nào để tìm các giá trị bắt đầu tốt cho hàm nls?
- 11. Làm cách nào để đặt DataAdapter.UpdateBatchSize thành giá trị "tối ưu"?
- 12. Làm cách nào để lọc từ điển theo giá trị?
- 13. Làm cách nào để cập nhật giá trị mảng javascript?
- 14. Có cách nào tốt hơn làm numpy.argmin() bỏ qua các giá trị NaN
- 15. Làm cách nào để thay đổi giá trị của giá trị Cài đặt.settings
- 16. Làm cách nào để đặt giá trị mặc định thành chuỗi trống cho cột TEXT?
- 17. Làm cách nào để lấy giá trị của một thành viên đối tượng có đường ống?
- 18. Làm cách nào để chuyển đổi giá trị cột này thành số nguyên?
- 19. Làm cách nào để nhóm các hàng mysql có cùng giá trị cột thành một hàng?
- 20. Làm cách nào để tự động thay đổi màu trong C# thành giá trị hex?
- 21. Làm cách nào để bạn đặt giá trị thành rỗng bằng org.json.JSONObject trong java?
- 22. Làm cách nào để kết hợp hai giá trị __m128 thành __m256?
- 23. Làm cách nào để chuyển đổi giá trị con trỏ thành QString?
- 24. Làm cách nào để chuyển đổi danh sách các giá trị ascii thành chuỗi trong python?
- 25. Làm cách nào để tìm các giá trị gần với một giá trị nhất định?
- 26. Làm cách nào để gọi hành động trên cùng một giá trị của giá trị spinner
- 27. chuyển đổi giá trị kép thành giá trị nhị phân
- 28. Làm cách nào để lưu trữ giá trị phần trăm?
- 29. Làm cách nào để gán giá trị trên đường chéo?
- 30. Làm cách nào để thoát dấu% trong giá trị configobj?
Tôi phát hiện ra rằng tôi chỉ có thể gọi REBASE.EXE -d -b 0x60000000 * .dll để thực hiện việc này. – frast