Không có câu trả lời chung cho điều này, đặc biệt là khi bạn chưa chỉ định khoảng cách bạn muốn chuyển. Linux trên x86 với thư viện mã nguồn mở sẽ dễ dàng hơn, uCos chạy trên MIPS32 hoặc Arduino sẽ không thể thực hiện được ..
Trước tiên, bạn phải đọc và phân tích cú pháp định dạng PE, cụ thể là bạn phải có thể nhận được nội dung của phần riêng lẻ và băm họ, như .text, .data vv Đối với cái nhìn sâu sắc như thế nào nó đặt lại với nhau, nhìn ở đây:
http://msdn.microsoft.com/en-us/magazine/cc301805.aspx http://msdn.microsoft.com/en-us/magazine/ms809762.aspx
Bây giờ bạn muốn đây là di động, vì vậy bạn có thể cuộn trình đọc PE/trình ghi giới hạn của riêng bạn hoặc xem xung quanh trong một số dự án nguồn mở đã thực hiện việc này. Hãy thử ReactOS hoặc Mono. Hoặc nếu bạn đang hạnh phúc chạy python, hãy thử điều này http://code.google.com/p/pefile/
Thứ hai, khi bạn đang xử lý mật mã, chữ ký số và chứng chỉ X.509, bạn cần một thư viện mã hóa di động đầy đủ. xác nhận và như vậy. Nếu bạn hài lòng với GPL, hãy thử OpenSSL hoặc CyaSSL, hoặc Botan nếu bạn muốn có giấy phép BSD.
Định dạng chính xác của chữ ký Authenticode, quá trình ký kết và quá trình kiểm chứng thực được desribed đây: http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx (Authenticode_PE.docx)
Nó sẽ đòi hỏi khá nhiều mã để kéo tất cả mọi thứ lại với nhau.
+1 Sửa đổi tiêu đề một chút để biểu thị rằng bạn có nghĩa là chữ ký số và không phải chữ ký tệp. (Ví dụ.MZ, "PE \ 0 \ 0", v.v.) –