c - Er der alligevel at få de statisk forbundne funktioner indeholdt i en .exe og genbruge dem?

Indlæg af Hanne Mølgaard Plasc

Problem



For eksempel:


Sig, jeg har linket myprogram.obj med myprogram.lib for at gøre myprogam.exe


Hvis myprogram.lib havde alle mulige specielle funktioner indeholdt i det, og jeg ved et uheld havde slettet det (og kilden), er der en måde, jeg kunne grave ind i myprogram.exe og få funktionerne ud? Eller måske bare konvertere myprogram.exe til en .lib fil på en eller anden måde og kun referere til de dele af det, jeg har brug for?

Bedste reference


Så her er sagen. Du kan sikkert 'dekompilere' din eksekverbare fil. Det er en smerte. Men hvis du ønsker alle de oplysninger, du måtte ønske i denne sag, så tag et kig på dette tidligere så spørgsmål.

Andre referencer 1


de fleste kompilatorer optimerer koden ved at fjerne ubrugte funktioner. medmindre du bruger hvert stykke af biblioteket, eller du tog sig af med at indstille kompilatoren, så den ikke optimerer væk ubrugte funktioner, er der ikke meget chance for at din lib-fil er inkluderet i sin helhed i den eksekverbare.

Andre referencer 2


Funktionerne er derinde. Hvis exe ikke er krypteret eller på anden måde ikke kan adskilles til straight assembler kode (exepackers, kryptering, dongles), kan du finde funktionerne.


Men deres navngivning og nøjagtige bounderies og andre annoteringer er væk, hvilket gør det svært at gøre dette automatiseret, da der ikke er noget at identificere funktionerne mere.


Det er med andre ord noget for en assembler-guiden eller for professionelle reverse engineering-tjenester.


Hvis din kode er meget værdifuld, og din compiler er relativt almindelig, er der omvendte ingeniørydelser, der kan gøre det for dig. Men vær forberedt på en stor pris. Selv bare analyse af, hvor nemt det bliver, kan være dyrt. (*)


I de fleste situationer er prisen på udvinding (enten din egen tid eller ansat) større end værdien af ​​funktionerne, og det er billigere at omskrive dem


(*) RTTI eller intern fejlretning muliggør det lettere.