software_security_and_reverse_engineering.pdf

(560 KB) Pobierz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Software Security and Reverse Engineering
What is reverse engineering?
Today the market of software is covered by an incredible number of protected
applications, which don't allow you to use all features of programs if you
aren't a registered user of these. Reverse engineering is simply the art of removing
protection from programs also known as “cracking”.
In Some other words cracking is described as follows: - “When you create a program
you engineer it, in fact you build the executable from the source-code. The reverse
engineering is simply the art of generate a source-code from an executable. Reverse
engineering is used to understand how a program does an action, to bypass protection etc.
Usually it's not necessary to disassemble all code of the application not only the part of
the application that we are interested must be reversed. Reverse engineering used by a
cracker to understand the protection scheme and to break it, so it's a very important thing
in the whole world of the crack.”
In short: - "Reverse Engineering referred to a way to modify a program such that it
behaves as the way a reverse engineer wish."
“Cracking is a method of making a software program function other than it was
Originally intended by means of investigating the code, and, if necessary, patching It.”
A Little bit of history
Reveres egg. Most probably start with the DOS based computer games. The aim is that a
player has full life and armed in the final stage of the game. So what a reverse egg. Do is
just find the memory location where the life and number of weapons are store and then
modify this values. They used memory-cheating tools such as game hack etc. So that they
have full life and armed in the last stage of the program. But in today’s world with the
advent of the shareware concept more and more software author releases the shareware
versions. Hence with this reverse engineering become more tedious, more complex, and
trickier.
Today to protect the software a programmer use various kind of technique, some of them
are old, bad repetitive techniques but some are new. We will discuss them in next section.
Various Protection schemas
Following are the most commonly used schemas
1) Hard coded serial
2) Serial number, name protection
3) Nag screen
4) Time trial
5) Dongle (hardware protection)
6) Commercial protection
836431500.551.png 836431500.662.png 836431500.773.png 836431500.825.png 836431500.001.png 836431500.012.png 836431500.023.png 836431500.034.png 836431500.045.png 836431500.056.png 836431500.067.png 836431500.078.png 836431500.089.png 836431500.100.png 836431500.111.png 836431500.122.png 836431500.133.png 836431500.144.png 836431500.155.png 836431500.166.png 836431500.177.png 836431500.188.png 836431500.199.png 836431500.210.png 836431500.221.png 836431500.232.png 836431500.243.png 836431500.254.png 836431500.265.png 836431500.276.png 836431500.287.png 836431500.298.png 836431500.309.png 836431500.320.png 836431500.331.png 836431500.342.png 836431500.353.png 836431500.364.png 836431500.375.png 836431500.386.png 836431500.397.png 836431500.408.png 836431500.419.png 836431500.430.png 836431500.441.png 836431500.452.png 836431500.463.png 836431500.474.png 836431500.485.png 836431500.496.png 836431500.507.png 836431500.518.png 836431500.529.png 836431500.540.png 836431500.552.png 836431500.563.png 836431500.574.png 836431500.585.png 836431500.596.png 836431500.607.png 836431500.618.png 836431500.629.png 836431500.640.png 836431500.651.png 836431500.663.png 836431500.674.png 836431500.685.png 836431500.696.png 836431500.707.png 836431500.718.png 836431500.729.png 836431500.740.png 836431500.751.png 836431500.762.png 836431500.774.png 836431500.785.png 836431500.796.png 836431500.807.png 836431500.818.png 836431500.820.png 836431500.821.png 836431500.822.png 836431500.823.png 836431500.824.png 836431500.826.png 836431500.827.png 836431500.828.png 836431500.829.png 836431500.830.png 836431500.831.png 836431500.832.png 836431500.833.png 836431500.834.png 836431500.835.png 836431500.002.png 836431500.003.png 836431500.004.png 836431500.005.png 836431500.006.png 836431500.007.png 836431500.008.png 836431500.009.png 836431500.010.png 836431500.011.png 836431500.013.png 836431500.014.png 836431500.015.png 836431500.016.png 836431500.017.png 836431500.018.png 836431500.019.png 836431500.020.png 836431500.021.png 836431500.022.png 836431500.024.png 836431500.025.png 836431500.026.png 836431500.027.png 836431500.028.png 836431500.029.png 836431500.030.png 836431500.031.png 836431500.032.png 836431500.033.png 836431500.035.png 836431500.036.png 836431500.037.png 836431500.038.png 836431500.039.png 836431500.040.png 836431500.041.png 836431500.042.png 836431500.043.png 836431500.044.png 836431500.046.png 836431500.047.png 836431500.048.png 836431500.049.png 836431500.050.png 836431500.051.png 836431500.052.png 836431500.053.png 836431500.054.png 836431500.055.png 836431500.057.png 836431500.058.png 836431500.059.png 836431500.060.png 836431500.061.png 836431500.062.png 836431500.063.png 836431500.064.png 836431500.065.png 836431500.066.png 836431500.068.png 836431500.069.png 836431500.070.png 836431500.071.png 836431500.072.png 836431500.073.png 836431500.074.png 836431500.075.png 836431500.076.png 836431500.077.png 836431500.079.png 836431500.080.png 836431500.081.png
7) Other (cd rom check, keyfiles, disabled function etc.)
Let’s study this in detail
1) Hard coded serial : -This is the simple protection as compared to other. In this kind of
protection we have to enter only a serial number and this serial number is same for all
users. Serial numbers entered are compared to the original serial through an algorithm
and if a user entered correct serial then the software registered.
2) Serial number - name protection :-In this kind of protection we have to enter a name
and a serial number. Then our serial no is compared with the original serial, no which is
derived from our name using some algorithm. This protection is some time easy and
some times hard, based on the algorithm a programmer use. Example of this type
protection is most widely used software "WinZip."
3) Nag screen :-In this kind of protection a screen come each time a user start the
application, to remained such that how many days are left or your software are
unregistered or any other message. This is a littlie hard to remove. And most of the
newcomers found it difficult as a new programmer to understand pointers (i.e. –WinZip).
But if a reverse has enough knowledge of windows API then he can easily remove the
nag screen.
4) Time Trial : - According to +ORC This kind of protection has any of following
protection or combination of following protection schema: -
a) To a predetermined amount of days, say 30 days, starting with the first day of
installation. This is referred as "CINDERELLA protection".
b) To a predetermined period of time (ending at a specific fixed date)
independently from the start date... 'BEST_BEFORE a given date' protection.
c) To a predetermined amount of minutes and/or seconds each time you fire
them... 'COUNTDOWN' TIME PROTECTIONS' example of this kind of
programs are some games and audio video player which allows an unregistered
user to play game for some amount of time say 5 minutes etc.
d) To a predetermined amount of 'times' you use them, say 30 times. Strictly
speaking these protections are not 'time' dependent. But they depend only on thing
"HOW MANY TIMES YOU EXICUTE THEM"
5) Dongle Protection : - this kind of protection is supposed to be toughest protection to
crack. This protection is consisting of an EPROM, which was connected with a port on
computer. The program which is protected by this is first cheeks the presence of this and
then cheeks that the program is registered or not all though it implementation is too hard
and hence this kind of protection is not very widely used. This is used in Big Protected
shareware’s. This protection is used by a I/O LPT port (hardware) You will need the
registration Card attached To your PC's parallel port Or other in order to make The
program fully work, otherwise it will be Expired after xxDays / xxUses /rippled or it
won’t work at all. Dongles such as: HASP / Sentinel are most commonly used. Dongles
uses DLLs/VxD to check the "is registered"
836431500.082.png 836431500.083.png 836431500.084.png 836431500.085.png 836431500.086.png 836431500.087.png 836431500.088.png 836431500.090.png 836431500.091.png 836431500.092.png 836431500.093.png 836431500.094.png 836431500.095.png 836431500.096.png 836431500.097.png 836431500.098.png 836431500.099.png 836431500.101.png 836431500.102.png 836431500.103.png 836431500.104.png 836431500.105.png 836431500.106.png 836431500.107.png 836431500.108.png 836431500.109.png 836431500.110.png 836431500.112.png 836431500.113.png 836431500.114.png 836431500.115.png 836431500.116.png 836431500.117.png 836431500.118.png 836431500.119.png 836431500.120.png 836431500.121.png 836431500.123.png 836431500.124.png 836431500.125.png 836431500.126.png 836431500.127.png 836431500.128.png 836431500.129.png 836431500.130.png 836431500.131.png 836431500.132.png 836431500.134.png 836431500.135.png 836431500.136.png 836431500.137.png 836431500.138.png 836431500.139.png 836431500.140.png 836431500.141.png 836431500.142.png 836431500.143.png 836431500.145.png 836431500.146.png 836431500.147.png 836431500.148.png 836431500.149.png 836431500.150.png 836431500.151.png 836431500.152.png 836431500.153.png 836431500.154.png 836431500.156.png 836431500.157.png 836431500.158.png 836431500.159.png 836431500.160.png 836431500.161.png 836431500.162.png 836431500.163.png 836431500.164.png 836431500.165.png 836431500.167.png 836431500.168.png 836431500.169.png 836431500.170.png 836431500.171.png 836431500.172.png 836431500.173.png 836431500.174.png 836431500.175.png 836431500.176.png 836431500.178.png 836431500.179.png 836431500.180.png 836431500.181.png 836431500.182.png 836431500.183.png 836431500.184.png 836431500.185.png 836431500.186.png 836431500.187.png 836431500.189.png 836431500.190.png 836431500.191.png 836431500.192.png 836431500.193.png 836431500.194.png 836431500.195.png 836431500.196.png 836431500.197.png 836431500.198.png 836431500.200.png 836431500.201.png 836431500.202.png 836431500.203.png 836431500.204.png 836431500.205.png 836431500.206.png 836431500.207.png 836431500.208.png 836431500.209.png 836431500.211.png 836431500.212.png 836431500.213.png 836431500.214.png 836431500.215.png 836431500.216.png 836431500.217.png 836431500.218.png 836431500.219.png 836431500.220.png 836431500.222.png 836431500.223.png 836431500.224.png 836431500.225.png 836431500.226.png 836431500.227.png 836431500.228.png 836431500.229.png 836431500.230.png 836431500.231.png 836431500.233.png 836431500.234.png 836431500.235.png 836431500.236.png 836431500.237.png 836431500.238.png 836431500.239.png 836431500.240.png 836431500.241.png 836431500.242.png 836431500.244.png 836431500.245.png 836431500.246.png 836431500.247.png 836431500.248.png 836431500.249.png 836431500.250.png 836431500.251.png 836431500.252.png 836431500.253.png 836431500.255.png 836431500.256.png 836431500.257.png 836431500.258.png 836431500.259.png 836431500.260.png 836431500.261.png 836431500.262.png 836431500.263.png 836431500.264.png
Dongle API is also used for some checks.
Example of programs, which uses this kind of protection, included some version of CAD
etc.
6) Commercial protection : - Most of the software programmer don’t want to spend
there precious time in deciding which kind of protection they used to protect there
software. Because they think that instead of the spending there time on designing the
security algorithm of there programs, why not they spend time to improving the
functionality of there program??? And here comes the concept of commercial protection.
Today some software company’s designs only security algorithm for various software.
Also they provide general software, which converts fully functional software in to
unregistered version and after paying the registration.
This software gets converted back in to the fully functional registered software after
entering the registration details. some of the companies which uses commercial
protection for there software are macromedia, Symantec etc and some companies which
provides this type of protection are preview systems (vbox protection) etc..
Although this kind of protection has high security because they are professionally
designed but they also have some disadvantages. One major disadvantage is that "if a
person cracks only one program which is protected using this protection, then he has
cracked the entire program which uses this kind of protection!!!!".
For example if a cracker has cracked the flash mx (which is protected by vbox) then he
was able to crack easily all the macromedia software such as dream waver mx etc.,
because all these programs are based on only one kind of protection!
And in the real world there is no protection, which is still uncracked.
7) Other protections : - There are many other techniques which are used to protect
software. These are generally used in computer games. Such as cd rom protection,
disabled function etc. I think most of computer user are familiar with this protection and
already seen this kind of protection. For example: - If a user doesn’t have cd for a
particular game then he cannot be able to play the game directly from hard disk. Because
when one runs the program then the program checks for the cdrom.
Also some protection schemes have disabled functions such as you cannot save your
work or you cannot use any particular function etc.
So I hope now you understand all the protection schemas, which used to protect software.
Ok let’s study how reverse engineering is done. The first thing to keep in mind that
cracker always works with the disassembly and they are familiar with the windows API.
836431500.266.png 836431500.267.png 836431500.268.png 836431500.269.png 836431500.270.png 836431500.271.png 836431500.272.png 836431500.273.png 836431500.274.png 836431500.275.png 836431500.277.png 836431500.278.png 836431500.279.png 836431500.280.png 836431500.281.png 836431500.282.png 836431500.283.png 836431500.284.png 836431500.285.png 836431500.286.png 836431500.288.png 836431500.289.png 836431500.290.png 836431500.291.png 836431500.292.png 836431500.293.png 836431500.294.png 836431500.295.png 836431500.296.png 836431500.297.png 836431500.299.png 836431500.300.png 836431500.301.png 836431500.302.png 836431500.303.png 836431500.304.png 836431500.305.png 836431500.306.png 836431500.307.png 836431500.308.png 836431500.310.png 836431500.311.png 836431500.312.png 836431500.313.png 836431500.314.png 836431500.315.png 836431500.316.png 836431500.317.png 836431500.318.png 836431500.319.png 836431500.321.png 836431500.322.png 836431500.323.png 836431500.324.png 836431500.325.png 836431500.326.png 836431500.327.png 836431500.328.png 836431500.329.png 836431500.330.png 836431500.332.png 836431500.333.png 836431500.334.png 836431500.335.png 836431500.336.png 836431500.337.png 836431500.338.png 836431500.339.png 836431500.340.png 836431500.341.png 836431500.343.png 836431500.344.png 836431500.345.png 836431500.346.png 836431500.347.png 836431500.348.png 836431500.349.png 836431500.350.png 836431500.351.png 836431500.352.png 836431500.354.png 836431500.355.png 836431500.356.png 836431500.357.png 836431500.358.png 836431500.359.png 836431500.360.png 836431500.361.png 836431500.362.png 836431500.363.png 836431500.365.png 836431500.366.png 836431500.367.png 836431500.368.png 836431500.369.png 836431500.370.png 836431500.371.png 836431500.372.png 836431500.373.png 836431500.374.png 836431500.376.png 836431500.377.png 836431500.378.png 836431500.379.png 836431500.380.png 836431500.381.png 836431500.382.png 836431500.383.png 836431500.384.png 836431500.385.png 836431500.387.png 836431500.388.png 836431500.389.png 836431500.390.png 836431500.391.png 836431500.392.png 836431500.393.png 836431500.394.png 836431500.395.png 836431500.396.png 836431500.398.png 836431500.399.png 836431500.400.png 836431500.401.png 836431500.402.png 836431500.403.png 836431500.404.png 836431500.405.png 836431500.406.png 836431500.407.png 836431500.409.png 836431500.410.png 836431500.411.png 836431500.412.png 836431500.413.png 836431500.414.png 836431500.415.png 836431500.416.png 836431500.417.png 836431500.418.png 836431500.420.png 836431500.421.png 836431500.422.png 836431500.423.png 836431500.424.png 836431500.425.png 836431500.426.png 836431500.427.png 836431500.428.png 836431500.429.png 836431500.431.png 836431500.432.png 836431500.433.png 836431500.434.png 836431500.435.png 836431500.436.png 836431500.437.png 836431500.438.png 836431500.439.png 836431500.440.png 836431500.442.png 836431500.443.png 836431500.444.png 836431500.445.png 836431500.446.png 836431500.447.png 836431500.448.png
Now all of us computer user knows that computer only understands binary nothing else.
So first we create a program and then compile it now what compiler does is check for
syntax, any error and then he generate the .obj file. As in high level language some
function are prewritten which are stored in library file hence after this we used linker
which links the programs with the library file and then after linking we get an exe file
hence exe file we use is nothing but the collection of instruction in binary formats.
Now to reverse engineer there are different tools available.
TOOLS OF THE TRADE
The popularity of Windows and the ease of creating programs for this platform have lead
to the development of thousands of shareware programs. Crackers usually work with the
assembly code, reverse engineering it, and have an excellent grasp of the Windows APIs
as well.
There is no one particular method to crack a program. Depending upon the program and
the kind of protection it has, crackers employ different techniques to get into the program.
But there are some common tools that crackers employ to start cracking the program.
These programs are perfectly legal and useful by themselves.
They are: -
1) Debugger
2) Dissembler
3) Hex-editor
4) Unpacker
5) File Analyzers
6) Registry monitor
7) File monitor
This is the tools, which a cracker used to reverse engineer any software. Let we have take
a detail look on them.
1) Debugger : -all of us know that debugger is a utility to debug the program. A
programmer use debugger to find bugs in their program. Debugger is only tool by which
we can trace/break a function or code live. There are many debuggers available in the
market. We all know how to debug any program, first we put a breakpoint on the required
statement and then we run the program. When this instruction is near to be executed the
program stops and we can see values! This thing is directly related with cracking.
Generally software programmer uses windows API function to get the serial number or to
create nag screen or dialog boxes. Now if a debugger support breakpoint on execution of
ape then a cracker easily set a breakpoint on API such as "getwindowtexta" and then after
tracing only some lines of code he can easily find the algorithm to used the generate key
and the key itself!!!
836431500.449.png 836431500.450.png 836431500.451.png 836431500.453.png 836431500.454.png 836431500.455.png 836431500.456.png 836431500.457.png 836431500.458.png 836431500.459.png 836431500.460.png 836431500.461.png 836431500.462.png 836431500.464.png 836431500.465.png 836431500.466.png 836431500.467.png 836431500.468.png 836431500.469.png 836431500.470.png 836431500.471.png 836431500.472.png 836431500.473.png 836431500.475.png 836431500.476.png 836431500.477.png 836431500.478.png 836431500.479.png 836431500.480.png 836431500.481.png 836431500.482.png 836431500.483.png 836431500.484.png 836431500.486.png 836431500.487.png 836431500.488.png 836431500.489.png 836431500.490.png 836431500.491.png 836431500.492.png 836431500.493.png 836431500.494.png 836431500.495.png 836431500.497.png 836431500.498.png 836431500.499.png 836431500.500.png 836431500.501.png 836431500.502.png 836431500.503.png 836431500.504.png 836431500.505.png 836431500.506.png 836431500.508.png 836431500.509.png 836431500.510.png 836431500.511.png 836431500.512.png 836431500.513.png 836431500.514.png 836431500.515.png 836431500.516.png 836431500.517.png 836431500.519.png 836431500.520.png 836431500.521.png 836431500.522.png 836431500.523.png 836431500.524.png 836431500.525.png 836431500.526.png 836431500.527.png 836431500.528.png 836431500.530.png 836431500.531.png 836431500.532.png 836431500.533.png 836431500.534.png 836431500.535.png 836431500.536.png 836431500.537.png 836431500.538.png 836431500.539.png 836431500.541.png 836431500.542.png 836431500.543.png 836431500.544.png 836431500.545.png 836431500.546.png 836431500.547.png 836431500.548.png 836431500.549.png 836431500.550.png 836431500.553.png 836431500.554.png 836431500.555.png 836431500.556.png 836431500.557.png 836431500.558.png 836431500.559.png 836431500.560.png 836431500.561.png 836431500.562.png 836431500.564.png 836431500.565.png 836431500.566.png 836431500.567.png 836431500.568.png 836431500.569.png 836431500.570.png 836431500.571.png 836431500.572.png 836431500.573.png 836431500.575.png 836431500.576.png 836431500.577.png 836431500.578.png 836431500.579.png 836431500.580.png 836431500.581.png 836431500.582.png 836431500.583.png 836431500.584.png 836431500.586.png 836431500.587.png 836431500.588.png 836431500.589.png 836431500.590.png 836431500.591.png 836431500.592.png 836431500.593.png 836431500.594.png 836431500.595.png 836431500.597.png 836431500.598.png 836431500.599.png 836431500.600.png 836431500.601.png 836431500.602.png 836431500.603.png 836431500.604.png 836431500.605.png 836431500.606.png 836431500.608.png 836431500.609.png 836431500.610.png 836431500.611.png 836431500.612.png 836431500.613.png 836431500.614.png 836431500.615.png 836431500.616.png 836431500.617.png 836431500.619.png 836431500.620.png 836431500.621.png 836431500.622.png 836431500.623.png 836431500.624.png 836431500.625.png 836431500.626.png 836431500.627.png 836431500.628.png 836431500.630.png 836431500.631.png 836431500.632.png 836431500.633.png
There are many debuggers available in the market but one of the most popular and a
powerful debugger is SOFTICE from NUMEGA CORPORATION. This debugger is so
powerful that earlier version of this debugger used to crack himself!!!! Almost all the
cracker in this world is using this debugger. So after seeing its misuse Numega
Corporation has kept some restriction on the sale of this great debugger and a buyer must
show that he will not use this debugger for illegal activities. But cracked copy of this
debugger is freely available on the net. This is a system level debugger, which works
directly between a computer's hardware and windows. We cannot load this debugger
within windows. We must load this debugger before windows loads in to the memory. It
can monitor every process, threads silently in memory until we call it up using hotkeys.
It allow us to patch memory at runtime (not permanently and hence we have to use hex
editor.) viewing the contents of the register, contains at memory address etc.
2) Disassembler : - As an executable file is in binary format so a normal user cannot
understand the instruction in this file. Also any exe or executable is generally in PE
format (which is a standard format for exe file, decided by the committee of software
companies like MICROSOFT, IBM, and AT&T. For more about exe search any virus
related site or /simply search your favorite search engines.) Hence a cracker first
disassemble the program .now a Disassembler converts the binary file in its equitant
assembly language instruction’s most of program is written in high level language hence
size of the disassembly goes in millions (or even larger) of lines and hence it is not
possible for any cracker to understand this code. And hence cracker generally looking for
strings in this disassembly such as; -"your 30 day trial period has expired." Or "the
serial no you entered is not valid!!!" Etc.
Then they trace the assembly code some lines and simply reverse the jumps. (For
example one to jump) so that control did not come on this string and go to the statement
such as "thanks for registration!!!"(We will see later how this can be done but currently
this info is enough for you..)
Now there are many dissembler available. But two of them, which are most commonly
used, are WIN32DASM and IDA .IDA is a powerful debugger then WIN32DASM and
used for advanced cracking. But WIN32DASM is most widely used debugger by
newcomer and intermediate crackers. This debugger allows you to disassemble any file
which is in PE format, we can save disassembly .it can tell us which function is imported,
which function is exported, we can execute jump, call, find string data reference and
dialog reference easily and many more facilities it provides like we can executes the exe
file, step in to it, step over and blah, blah.
836431500.634.png 836431500.635.png 836431500.636.png 836431500.637.png 836431500.638.png 836431500.639.png 836431500.641.png 836431500.642.png 836431500.643.png 836431500.644.png 836431500.645.png 836431500.646.png 836431500.647.png 836431500.648.png 836431500.649.png 836431500.650.png 836431500.652.png 836431500.653.png 836431500.654.png 836431500.655.png 836431500.656.png 836431500.657.png 836431500.658.png 836431500.659.png 836431500.660.png 836431500.661.png 836431500.664.png 836431500.665.png 836431500.666.png 836431500.667.png 836431500.668.png 836431500.669.png 836431500.670.png 836431500.671.png 836431500.672.png 836431500.673.png 836431500.675.png 836431500.676.png 836431500.677.png 836431500.678.png 836431500.679.png 836431500.680.png 836431500.681.png 836431500.682.png 836431500.683.png 836431500.684.png 836431500.686.png 836431500.687.png 836431500.688.png 836431500.689.png 836431500.690.png 836431500.691.png 836431500.692.png 836431500.693.png 836431500.694.png 836431500.695.png 836431500.697.png 836431500.698.png 836431500.699.png 836431500.700.png 836431500.701.png 836431500.702.png 836431500.703.png 836431500.704.png 836431500.705.png 836431500.706.png 836431500.708.png 836431500.709.png 836431500.710.png 836431500.711.png 836431500.712.png 836431500.713.png 836431500.714.png 836431500.715.png 836431500.716.png 836431500.717.png 836431500.719.png 836431500.720.png 836431500.721.png 836431500.722.png 836431500.723.png 836431500.724.png 836431500.725.png 836431500.726.png 836431500.727.png 836431500.728.png 836431500.730.png 836431500.731.png 836431500.732.png 836431500.733.png 836431500.734.png 836431500.735.png 836431500.736.png 836431500.737.png 836431500.738.png 836431500.739.png 836431500.741.png 836431500.742.png 836431500.743.png 836431500.744.png 836431500.745.png 836431500.746.png 836431500.747.png 836431500.748.png 836431500.749.png 836431500.750.png 836431500.752.png 836431500.753.png 836431500.754.png 836431500.755.png 836431500.756.png 836431500.757.png 836431500.758.png 836431500.759.png 836431500.760.png 836431500.761.png 836431500.763.png 836431500.764.png 836431500.765.png 836431500.766.png 836431500.767.png 836431500.768.png 836431500.769.png 836431500.770.png 836431500.771.png 836431500.772.png 836431500.775.png 836431500.776.png 836431500.777.png 836431500.778.png 836431500.779.png 836431500.780.png 836431500.781.png 836431500.782.png 836431500.783.png 836431500.784.png 836431500.786.png 836431500.787.png 836431500.788.png 836431500.789.png 836431500.790.png 836431500.791.png 836431500.792.png 836431500.793.png 836431500.794.png 836431500.795.png 836431500.797.png 836431500.798.png 836431500.799.png 836431500.800.png 836431500.801.png 836431500.802.png 836431500.803.png 836431500.804.png 836431500.805.png 836431500.806.png 836431500.808.png 836431500.809.png 836431500.810.png 836431500.811.png 836431500.812.png 836431500.813.png 836431500.814.png 836431500.815.png 836431500.816.png 836431500.817.png 836431500.819.png
Zgłoś jeśli naruszono regulamin