เป็นไปได้หรือไม่ที่จะรวม dll พื้นเมืองหลายตัวไว้ใน exe?
ใช่ฉันรู้ว่าเขาเป็นไปได้อย่างง่ายดายด้วย. NET / Mono / Managed dll ที่ แต่ฉันสามารถทำเช่นเดียวกันกับคนพื้นเมือง? ฉันได้พบแล้ว UPX แต่ดูเหมือนว่าจะสามารถแพ็คไฟล์ได้เท่านั้นอย่ารวมไฟล์เข้าด้วยกัน
เป็นไปได้หรือไม่ที่จะรวม dll พื้นเมืองหลายตัวไว้ใน exe?
ใช่ฉันรู้ว่าเขาเป็นไปได้อย่างง่ายดายด้วย. NET / Mono / Managed dll ที่ แต่ฉันสามารถทำเช่นเดียวกันกับคนพื้นเมือง? ฉันได้พบแล้ว UPX แต่ดูเหมือนว่าจะสามารถแพ็คไฟล์ได้เท่านั้นอย่ารวมไฟล์เข้าด้วยกัน
คำตอบ:
ไลบรารี Dynamic Link ถูกออกแบบมาให้ใช้ภายนอก ในขณะที่ในทางทฤษฎีมันควรจะเป็นไปได้ที่จะ repackage ฟังก์ชั่นที่พวกเขามีสมจริงที่ดีที่สุดที่คุณสามารถทำได้อย่างน่าเชื่อถือคือการแพ็คทุกอย่างลงในเก็บถาวรแบบขยายตัวเองที่จะแยกปฏิบัติการและ DLLs
หากคุณสามารถเก็บซอร์สโค้ดได้คุณสามารถรวบรวมได้ด้วยการเปลี่ยนแปลงเล็กน้อยในไลบรารีแบบคงที่ (.lib) ที่สามารถเชื่อมโยงกับโปรแกรมที่ต้องการ DLLs แทนที่จะเป็น DLL ภายนอก
สมมติว่าคุณมีการปฏิบัติการที่นำเข้าจาก DLL แบบคงที่คุณสามารถใช้ pefrmdllembed เครื่องมือที่ใช้ตัวเลือกบรรทัดคำสั่ง "-impinj" มันสามารถรวมไฟล์ DLL เนทิฟเข้ากับไฟล์ EXE ดั้งเดิม (ของสถาปัตยกรรมเดียวกัน) ในขณะที่การแก้ไขการนำเข้า
ตัวอย่าง: pefrmdllembed.exe -impinj myapp.exe ogg.dll myapp_injected.exe
มันจะทำงานกับ DLLs ส่วนใหญ่ ระวังเกี่ยวกับฟีเจอร์โหลดเดอร์ NT พิเศษเช่นสแตติก TLS ไม่สนับสนุนภายใต้ 64 บิตและอาจไม่ให้ผลลัพธ์ที่ดีภายใต้ 32 บิต