Imagine if you will that you're a programmer way back in the day of hammer and
chisel.
You're working with Pascal and you're wanting to make a program that
essentially goes through
and runs, I don't know, let's think of something you dig like a photo editor or
something like that.
It's going to be ginormous because in Pascal you had to keep everything in one
continuous file
when you did the compiling for that executable. And the more detailed your
program got, the longer
that one file got as well. Well since then we've evolved into more refined
languages like C++
and in C we are able to take portions of our program and split them off to
chunks referred
to as libraries. Now in Windows these libraries are contained in DLL files. And
so what that means
is that the actual program itself can be as concise and compact as possible
occupying less space in
the RAM and allowing us to only call upon portions of the program overall if
absolutely needed.
And if it is needed that's where the libraries or those DLL files come into
play at. So the
initial program itself will always be called up into the RAM as we'll see as
the skill unfolds.
And the DLLs are only there as needed and as soon as that portion of the
program is no longer needed
that DLL frees up itself out of the RAM so that something else may take its
place later on.
Now the bigger the program the more libraries or DLLs that you're going to have
because you don't
want that old Pascal file that's compiled up into one long executable file. And
these libraries can
be shared amongst other programs within the Windows world as well or just in
programming world as a
whole because let's say like for instance in our skill here we're going to be
covering DLLs inside
Windows. Windows comes with a lot of those libraries already pre-installed
inside of the operating
system and there are programs written in multiple languages out there. Some not
as refined as C
but rely on these libraries to be able to perform some functions and lightning
the load of the
actual third party software development teams as well. So instead of having
every program that you
get have all these DLLs and libraries with them as an installation requirement
Windows already has
a lot of them pre-installed and they're shared. And we're going to see
throughout this skill
how those libraries affect the actual programs themselves get an understanding
of how they look
and hook into those programs and show you how they're shared amongst other
programs as well to
thus saving up precious RAM space because you'll see that some of these DLL and
libraries
are actually shared amongst double digit numbers of programs but they only take
up one slot
inside of the RAM if you dig into it for volatility research. Now we're not
going to be digging into
the volatility of it yet that's for you digital forensics folks out there.
There's a whole course
on that here on CBT nuggets. But we will be taking a look at how these DLLs
interact with each other
how they're signed and verified and some of them are self-signed and not
verified and set
ourselves up for the next portion of this course where we start actually going
in and doing some
DLL hijacking. But first we need to understand the importance of the DLLs how
they act as libraries
and make life better as a coder for us programmers out there and get us away
from those antiquated
languages like Pascal. There's a special place in my heart for you Pascal.