Tôi đang làm việc trong một dự án liên quan đến công nghệ hộp cát.Chạy lắp ráp .exe từ bộ đệm trong C
Hiện tại tôi đang viết một chương trình C được lắp ráp nhỏ .exe
nhị phân (.NET)
từ máy chủ web từ xa. Mã nhị phân này được lưu trữ trong bộ nhớ (không bao giờ chạm vào đĩa) và ý định của tôi là chạy nhị phân này từ bộ nhớ. Nếu khách hàng của tôi đã được thực hiện trong .NET
Tôi sẽ không có vấn đề để chạy mà lắp ráp từ bộ nhớ (trên thực tế, có rất nhiều differents cách để nhận được điều này), nhưng tất nhiên đó là không thể với C
(không hoàn toàn chắc chắn).
Câu hỏi của tôi là: có hội đồng đó .exe
trong không gian địa chỉ của chương trình C
của tôi, có cách nào để chạy nó từ đó không? Có cách nào để cho phép CLR
chạy nó không? Lúc đầu, tôi nghĩ để gọi powershell để chạy nó từ đó (bằng cách sử dụng Reflection.Assembly) nhưng trường hợp đó liên quan đến việc viết lắp ráp vào đĩa.
Trong mọi trường hợp, không nghi ngờ gì là cách tốt nhất và hiệu quả để có được điều này là sử dụng ứng dụng khách .NET
.
Có thể, tôi không nghi ngờ gì. Dễ dàng? Không, tôi khá nghi ngờ điều này nằm ngoài phạm vi của một câu trả lời SO đơn lẻ. –
Vâng, chúng ta biết rằng hội đồng .net chỉ có thể được thực hiện bởi thời gian chạy .net (hoặc tương đương). Vì vậy, làm thế nào về việc sử dụng CLI để giao tiếp với C# từ C. Sau đó sử dụng các phương thức C# đã có để chạy một assembly từ bộ nhớ. Điều đó có hoạt động theo cách bạn muốn không? – kbzombie
Nó có thể được thực hiện trong PS mà không cần ghi vào đĩa. Chắc chắn KHÔNG dễ dàng. Dưới đây là phác thảo của [cách] (https://www.defcon.org/images/defcon-21/dc-21-presentations/Bialek/DEFCON-21-Bialek-PowerPwning-Post-Exploiting-by-Overpowering-Powershell .pdf) và liên kết tới [nhiều mã] (https://github.com/clymb3r/powershell) –