l'Old new thing ha dei blog tecnici che parlano dei PE,specificamente di come il loader di ntoskrnl risolve il caricamenti di una DLL, direi che è molto importate per definire come Windows legge la .idata (la tabella degli import) che è a quanto pare più complessa di quel che pensavo (si parlano di certi hinting che ancora non so)
chiaramente potrei chiedere una AI di riassumere tutto in maniera veloce, ma non capirò mai come funziona sta roba BENE in questo modo, e l'unica cosa che conta in questo canale è perdere quanto più tempo possibile in conoscenze di dominio super specifiche e non vendibili in nessun tipo di l*voro
🔥1
ora anche qui la fantomatica domanda è, come hanno fatto quelli dell'LLVM senza super insight da Microsoft/GNU a implementarsi il linker? Qui si parla di conoscenze speciali trovabili solo con le query giuste a devblogs.microsoft.com/oldnewthing/
The Old New Thing
Practical development throughout the evolution of Windows.
The 8086 instruction set also has special instructions which treat the DX:AX pair as a single 32-bit value, so that was the obvious choice to be the register pair used to return 32-bit values.
❓❓❓❓❓
❓❓❓❓❓
> The classic (pre-prototype) C language allowed you to call functions without telling the compiler what parameters the function requested, and it was common practice to pass the wrong number of parameters to a function if you “knew” that the called function wouldn’t mind. (See “open” for a classic example of this. The third parameter is optional if the second parameter does not specify that a file should be created.)
😭 SI OK non avevo mai ragionato che questo fosse il motivo per cdecl
😭 SI OK non avevo mai ragionato che questo fosse il motivo per cdecl
You may notice that all of the RISC calling conventions are basically the same. Once again, evidence that the 8086/x86 is the weirdo. A wildly popular weirdo, mind you.
he Itanium has 128 integer registers, 32 of which (r0 through r31) are global and do not participate in function calls. The function declares to the processor how many registers of the remaining 96 it wants to use for purely local use (“local region”), the first few of which are used for parameter passing, and how many are used to pass parameters to other functions (“output registers”).
❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓
❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓❓
https://n10h0ggr.github.io/posts/IAT-Hiding/ è molto alla bella e la buona come molti blog un po' cosi di malware/re, cmq ti direi che è interessante se si vuole fare edr hiding
N10h0ggr
IAT Hiding & Obfuscation
The Import Address Table (IAT) holds crucial data about a PE file, including the functions utilized and the DLLs that export them. Such data is pivotal for signature-based detection of binaries. In this post, we’ll delve into various techniques for obscuring…
ok tra poco torna mirmir, quindi qui posto un po' i thread che ho trovato su oldnewthing per ora riguardante il tema di loader e di DLL, magari a qualcuno possono risultare utili
queste risorse riguardano generalmente come WIndows 16/32 leggono gli import ed export, come mai sono state fatte certe scelte e cosi via
Cosa molto stupida (scontata per chi ha fatto un po' di DLL) riguardante __dllexport
- https://devblogs.microsoft.com/oldnewthing/20040112-00/?p=41083
Perchè ci sono cosi tante calling convention???
- https://devblogs.microsoft.com/oldnewthing/20040102-00/?p=41213
- https://devblogs.microsoft.com/oldnewthing/20040107-00/?p=41183
- https://devblogs.microsoft.com/oldnewthing/20040108-00/?p=41163
- https://devblogs.microsoft.com/oldnewthing/20040108-00/?p=41163
- https://devblogs.microsoft.com/oldnewthing/20040113-00/?p=41073
- https://devblogs.microsoft.com/oldnewthing/20040114-00/?p=41053
Index riguardante DLL import e DLL export:
- https://devblogs.microsoft.com/oldnewthing/20060727-04/?p=30333
Comando per controllare i linkermember:
- https://www.geoffchappell.com/studies/msvc/link/dump/options/linkermember.htm
Ottimizzazioni di come Windows carica una DLL:
- https://devblogs.microsoft.com/oldnewthing/20100317-00/?p=14573
- https://devblogs.microsoft.com/oldnewthing/20100318-00/?p=14563
- https://devblogs.microsoft.com/oldnewthing/20231129-00/?p=109077
- https://devblogs.microsoft.com/oldnewthing/20231130-00/?p=109084
queste risorse riguardano generalmente come WIndows 16/32 leggono gli import ed export, come mai sono state fatte certe scelte e cosi via
Cosa molto stupida (scontata per chi ha fatto un po' di DLL) riguardante __dllexport
- https://devblogs.microsoft.com/oldnewthing/20040112-00/?p=41083
Perchè ci sono cosi tante calling convention???
- https://devblogs.microsoft.com/oldnewthing/20040102-00/?p=41213
- https://devblogs.microsoft.com/oldnewthing/20040107-00/?p=41183
- https://devblogs.microsoft.com/oldnewthing/20040108-00/?p=41163
- https://devblogs.microsoft.com/oldnewthing/20040108-00/?p=41163
- https://devblogs.microsoft.com/oldnewthing/20040113-00/?p=41073
- https://devblogs.microsoft.com/oldnewthing/20040114-00/?p=41053
Index riguardante DLL import e DLL export:
- https://devblogs.microsoft.com/oldnewthing/20060727-04/?p=30333
Comando per controllare i linkermember:
- https://www.geoffchappell.com/studies/msvc/link/dump/options/linkermember.htm
Ottimizzazioni di come Windows carica una DLL:
- https://devblogs.microsoft.com/oldnewthing/20100317-00/?p=14573
- https://devblogs.microsoft.com/oldnewthing/20100318-00/?p=14563
- https://devblogs.microsoft.com/oldnewthing/20231129-00/?p=109077
- https://devblogs.microsoft.com/oldnewthing/20231130-00/?p=109084
Diciamo che gli ordinal sono un legacy usato quasi solo per ottimizzare
TIL per mangiare devo per forza fare 6 ore di shift da engel al giorno (non li ho fatti)