This is a somehow 'difficult' part to explain.
People that are not in the know usually don't
understand how important it is, for a seeker, to enter a 'blocked' database, or to try out
useful software in its uncrippled form before deciding if it is worth buying or not.
The Linux world has fortunately the GNU. The Free Software Foundation is dedicated
to eliminating restrictions on copying,
redistribution, understanding and modification of
computer programs. This is worth, correct and the very reason of the
triumphing future of a free system like GNU/Linux. The word "free", in this sense,
refers to the freedom to copy a program and give it away to your
friends and co-workers; and the freedom to change a program as you wish,
by having full access to source code. So it should be in our future
world of shared knowledge and mutual induced evolution, where what we know
and what we give (NOT what we 'own' and what we hide) will be the only
parameters worth noticing.
Free source! Thattaway, you can study the sourcecode and learn how such programs
are written.
Hence you may then be able to port it, you can improve it building on
the shoulders of others, sharing your changes with them. This approach has proved so
powerful that even the commercial powers that be cannot ignore the phenomenon any more.
(Alas! Thorwald's apolitical 'Linux' kernel has 'stolen' the connection between
the GNU project and aims and its own software... people shouldn't speak of 'Linux', they
should always speak of 'GNU/Linux', to recall that the whole purpose of the new os,
as its 'father' [Richard
Stallman] said one hour ago, is to foster freedom, and sharing.
Free source, full access to source code, like in the GNU/Linux approach do not exist (yet) in the
dark real world of the commercial bastards.
Unfortunately the windows world is the exact opposite. In the windoze world
the aim is to outlaw reverse engineering. Every application comes with an
'agreement' you are supposed to sign, where it is mostly explicity forbidden to reverse,
disassemble or even study the guts of the program. Of course noone reads the stuff
contained in
these EULAs (end user license agreements). They could actually
have a clausel inside that impose you to give your
firstborn son to the software company for what you know. I suggest to
those of you that are
programmers to
write inside your own EULAs something stating that commercial entities are bound to give you 50 dollars
for
every minute they use the software. A clever lawyer (an oxymoron, alas :-) would probably
be able to scare some companies into paying.
Fortunately EULAs don't mean nothing and don't represent an obstacle at all, not
even for your moral scruples: if you know how to reverse software,
it is relatively easy to swap
the texts on the buttons at the bottom before pressing them (you'll use for this the customizer, as explained below.
Thus, after having changed the text on the botton, you'll press onto your new
"I don't agree"
tag in order to proceed
installing the software :-)
In the windoze world every little programmer
seems to believe that his appz is the center of the universe and that he may have
the right to use its hidden features in order to spy
on his clients, eventually establishing hidden connections in the background and syphoning
data onto his own server. They also cripple software, limit its use, and even recur to
'punitive actions' against anyone found having a copy of softice (a most powerful debugger)
or of IDA (a most powerful diassembler) on his harddisk. You'll be able to find many examples of these
malwares around.
Should we allow unauthorized third parties to spy on our searching patterns and private data?
Of course not, and to avoid snoopers we have more weapons up our sleeves than
simple web-users seem to believe possible.
The galactic power of reverse engineering
I wish, closing todays workshop, to show you a very simple technique to get rid of ANY
advertismeent embedded in any software application whatsoever. Moreover I want to show you a technique
so simple that even those among you that -alas for them- don't understand nothing
of assembly and source code and software reversing techniques will be
nevertheless able to get rid of the ads. Come to think of it, even their sons and beloved ones and
friends and aunts will be able to do it. As an added advantage, the big industry that
was developing such pushing of
advertisement sores through software (I frankly don't know how many
million dollars they were supposed to make with these dirty deeds) is now
once for all doomed, at least I hope, eheh. Reverse engineers as medieval knights,
helping unaware
fellow humans in peril. I love the picture. More wizards than knights maybe.
Let's take as a practical example: webferret, a
'free' software bot that you can (and should: it works very well) use to search the
web. It is a very simple bot, yet useful even for experienced searchers. You can download for 'free' this
software, but it has unfortunately an horrible bug: a small window opens inside it
and pushes awful advertising banners into
your eyes until they get sore. Moreover all these appz use their
banners ALSO in order to track your habits:
the clicking patterns of those among you that are really so stupid as to fall
for advert banners
are of course registered, grepped and sold to third parties.
How would you proceed to 'ameliorate' this appz? There are so many ways...
a very simple one is through the width of the offensive banner.
Look at the window dimensions: 63 height * 473 pixels width. (You can use
either softice's hwnd -x command or a good ruler like sruler, or, again, simply
the customizer
itself).
The two decimal numbers translate into 0x3F and Ox1D9 in hexadecimal and these values are
the starting point (the 'hook')
you would use to really reverse (or 'crack') this target
If you want to reverse this target as a software reverser would do, feel free to
read my essay frav_023.htm for a complete explanation.
As a side note for non-reversers savvy: keep always
in mind that there exict the so called 'Procustes' method
against all kind of advertisement banners.
Indeed, in similar cases, once you find the correct location
it would probably suffice to
change the width byte sequence (1d9, i.e. 'slack' 1d8/1da... or whatever) to a zero byte sequence in order
to "mutilate" the advertisement width reducing the
banner to an invisible - and well-deserved - width of zero pixel :-)
Of course disabling once for ever
the offending advertisement window is even better than having it nuked but still working
and pumping ads in the
background.
If you don't know how to disable windows and don't have the time to learn how to reverse
engineer software (a pity, if you ask me) you have as a MUCH more simple alternative the approach I
would like to teach you today:
download the customizer, a truly wondrous application,
from my site and use its 'hide window' or 'disable window' or even 'minimize window'
functions against any
'advertisement culprit' target, like Webferret. Eheh:-)
The customizer's customization
Have a look by yourself at the big screen behind my shoulders and gasp in
awe at the mighty power of software reverse engineering (even at such a
superficial and simpleton level):
download the customizer, fire it... see the nice yellow ball?
download webferret, fire it... see the ugly advertisement?
click 'edit window' inside the customizer
Check 'select' and click onto the 'on' button inside the customizer's big window
Click on webferret's hideus advertisement banner (as you can see there are A LOT
of other hidden 'ghost' windows
in a running windows operating system, you'll play with
that stuff later, now let's simply disable the
advertisment banner... look at the big screen behind my shoulders... nothing in my hands but
a touchpad, eheh :-)
You see: Parentclass #32770, Handle 0x0e70, Height 63, Width 473
Now let's click on Customizer's 'misc' tag
Let's choose 'send mouse click' after having checked the 'minimize' option
See! How funny! We have minimized a window wich wasn't supposed to be minimized at all! See:
it cannot go all the way down to the bottom bar, it hangs there 'in the air' inside webferret.
Note that you can
minimize everything... the icon with the blue globus as well if you fancy it (or you could
substitute it with your own logo).
Let's choose 'send mouse click' now, after having checked 'close'...
we'll send a closing message to advertisement window and kill it.
See? Puff! Bye bye ads... now you could compare the code in memory with the code of the
original application and modify accordingly with any hexeditor. Webferret has
been 'cleaned', its repulsive
advertisement banner is no more...
quod erat demonstrandi
Of course no real software reverser would loose so much time on this target,
once you learn the
art, you'll be able to find the culprit routines just 'feeling' the code
and kill
them changing - more often that you would believe - a single byte.
I only wanted to show you a silly, extremely simple and very easy example
of the galactic power that
software reverse engineering can give... even to zombies.
Free from the chains that your software would like
to impose on you, you'll be able to recreate, at least in part, the
free GNU atmosphere that you can enjoy in the GNU/Linux world.
Probably too much power for single individuals.
No wonder that the commercial
powers and their political lackeys in our parliaments
are trying to outlaw these techniques and the very tools
we use (and abuse) to perform this art.
The secret path to reality cracking
This is not only true for
software.
The world around us is full of codes you are not supposed even to understand, least you may
try to reverse them. They are there in order to control you and guarantee
profits for somebody other. Codebars, embedded chips, pattern tracking algos, email
grepping facilities, supermarkets' 'advantage' cards, pension funds pyramid schemes, a plethora of
lotteries you'r mathematically certain to lose money into, mode, trends,
pushed advertisement, even subliminal techniques... every single bait,
of course, masked behind a supposed 'free'
or 'cheap' usage. We should, I believe, always try to explain what's really
going on 'under the hood' to the zombies and slaves roaming around
and bumping from one consuming opportunity
into the other, like flies
against the walls of an upside-down glass. We should in particular teach
our children to look behind the facades of the
Potjomkin villages of this nice 'open' e-society we are condemned to live into.
But the time
I have been allowed to use for this conference is almost finished, and we are now
far away from searching techniques and software reversing approaches,
even if those techniques can be VERY powerful
means in order to reach the aims I'm trying to describe.
They want a static world of hidden features and codes you are not supposed even to understand,
where they will be free to push advertisements down your throath at whim,
making profit out of that.
We want
a world of shared knowledge and evolution. A world where 'know' will mean a lot
and 'own' won't mean much.
We will win.