<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Reverse Code Engineering For Beginners *FullShot99 V5.05* (For
Educational Use Only)</title>
</head>




<p align="center"><b><u><font size="4">FullShot99</font></u></b></p>
<p align="center"><u><i><font size="4">Reverse Code Engineering For Beginners</font></i></u></p>
<p align="center"><u><i><font size="4">For Educational Use Only</font></i></u></p>
<p align="right"><b><font size="2">Date: 28<sup>th</sup> May 2000</font></b></p>
<p><b><font size="2">Project No: 2</font></b></p>
<p><font size="2"><b>This File Escaped From: &quot;<u>Learn Cracking In New
Style.</u>&quot;</b></font></p>
<p><font size="2"><b>Target: FullShot99 V5.05</b></font></p>
<p><font size="2"><b>Download From:</b> <a href="http://www.image123.com/fs99v505.exe">http://www.image123.com/fs99v505.exe</a>
(Size: 1.14MB)</font></p>
<p><font size="2"><b>Tools Used:</b> SoftICE, W32Dasm and a HexEditor
(http://protools.cjb.net)</font></p>
<p><font size="2"><b>Rating: </b>It's easy when you know how.</font></p>
<p><font size="2"><b>Remember This: </b>It is easy to destroy but hard to
create. Software authors work hard to give us good quality software so support
shareware. If your intension is of pirating this software then stop reading.....
and delete this file immediately. It's better you look for it in some WAREZ
sites.</font></p>
<hr>
<p><font size="2"><b>About The Program:</b></font> <font size="2">FullShot is the complete image capture and screen printing program designed for users who need to work with images from Microsoft Windows screens.</font>
<font size="2">FullShot 99 is implemented in 32-bit Windows API, and it is</font>&nbsp;<font size="2">
designed for Windows 95, Windows 98, Windows NT Workstation and Server 4.0 (on Intel or compatible microprocessors).</font></p>
<p><font size="2">
<b>About Protection Scheme: </b>The program shows a nag-screen at
start-up. You can get to the registration box through HELP menu. After
successfully registering this software, it stores the user information along
with license no. in the license file &quot;Fullshot99.lic&quot;. If the software
is registered while installing then it saves the license file in
&quot;\Fullshot99&quot; directory located in your root directory or if you
installed a trial version then it stores the license file in
&quot;\Windows&quot; directory.</font></p>
<p align="center"><big><b><u><big>The Essay</big></u></b></big></p>
<p><font size="2"><b>First Approach: </b>I'll explain all the approaches but for
now install a Trial Version of FullShot99. Go to Registration Box and enter a
fake License no. Let's say 12345556789. Then click OK. Oops... it returned
&quot;Invalid License Number&quot;. OK. no problem. Create a dead list of this
program with W32Dasm and look for &quot;Invalid License Number&quot; in String
Data Reference&quot; Remember, the license no. must be of 11 digits. Why? you'll
see.</font></p>
<p><font face="Courier New" size="2">:00415936 6834EB4600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push 0046EB34<br>
:0041593B 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:0041593C E8EF430100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00429D30<br>
:00415941 83C40C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add esp, 0000000C<br>
:00415944 85C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
test eax, eax<br>
:00415946 0F84D9010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; je 00415B25<br>
:0041594C 8D45BC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea eax, dword ptr [ebp-44]<br>
:0041594F 8BCE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov ecx, esi<br>
:00415951 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415952 E81A020000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call
00415B71 <font color="#808000"> ;Call validation routine</font><br>
:00415957 85C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
test eax, eax&nbsp;<br>
:00415959 750D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00415968&nbsp; <font color="#808000">;you can force this to jump and it would be cracked, with only one byte.
(But if you typed some 5's at the wrong places it is limited to personal edition
only! Here 5 means that the digits in license no. lets says if the license no.
is 12345556789 then is you put 5 at wrong places then it will be limited to
personal edition only.
)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
:0041595B 6AFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push FFFFFFFF<br>
:0041595D 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
* Possible Reference to String Resource ID=33003: "Invalid License Number"<br>
                                  |<br>
:0041595E 68EB800000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push 000080EB<br>
:00415963 E9B6010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jmp 00415B1E</font></p>
<p><font size="2">Now, you know where is the Validation routine is. So, fire-up
S-ice and set</font><font size="2"> bpx GetDlgItemTextA =&gt;F5 and then F11 and F8 4 times then into the next call (the offset is not same as when you run it inside s-ice!)
or simply after you are inside the program's routine. Do bc* and bpx 00415952
and press F5. S-ice breaks again and press F8.</font></p>
<p><font face="Courier New" size="2">Validation routine:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
~~~~~~~~~~~~~~~~~~~~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
* Referenced by a CALL at Address:<br>
|:00415952&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
:00415B71 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push ebp<br>
:00415B72 8BEC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov ebp, esp<br>
:00415B74 83EC24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sub esp, 00000024<br>
:00415B77 53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push ebx<br>
:00415B78 56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push esi<br>
:00415B79 8B7508&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov esi, dword ptr [ebp+08]<br>
:00415B7C 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push edi<br>
:00415B7D 56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push esi<br>
:00415B7E E8DD310100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00428D60<br>
:00415B83 83F80B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp eax, 0000000B&nbsp;&nbsp; <font color="#808000">;Do we have B=11 digits?</font><br>
:00415B86 59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop ecx<br>
:00415B87 0F8502020000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne 00415D8F&nbsp;&nbsp;
<font color="#808000">;If not jump fake reg</font><br>
:00415B8D 8A06&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi]&nbsp;&nbsp; <font color="#808000">;1st into al</font><br>
:00415B8F B139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov cl, 39<br>
:00415B91 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415B93 0F8FF6010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F&nbsp;&nbsp;
<font color="#808000">;more than 9=jump away</font><br>
:00415B99 B330&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov bl, 30<br>
:00415B9B 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415B9D 0F8CEC010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F&nbsp;&nbsp;
<font color="#808000">;less than 0=jump away</font><br>
:00415BA3 8A4601&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+01]&nbsp;&nbsp;&nbsp; <font color="#808000">;2nd  into al</font><br>
:00415BA6 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415BA8 0F8FE1010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F&nbsp;&nbsp;&nbsp;
<font color="#808000">;more than 9=jump away</font><br>
:00415BAE 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415BB0 0F8CD9010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F&nbsp;&nbsp;&nbsp;
<font color="#808000">;less than 0=jump away</font><br>
:00415BB6 8A4602&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+02]&nbsp;&nbsp;&nbsp; <font color="#808000">;3rd into al</font><br>
:00415BB9 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415BBB 0F8FCE010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415BC1 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415BC3 0F8CC6010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415BC9 8A4603&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+03]&nbsp;&nbsp;&nbsp; <font color="#808000">;4th into al</font><br>
:00415BCC 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415BCE 0F8FBB010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415BD4 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415BD6 0F8CB3010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415BDC 8A4604&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+04]&nbsp;&nbsp;&nbsp; <font color="#808000">;5th into al</font><br>
:00415BDF 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415BE1 0F8FA8010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415BE7 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415BE9 0F8CA0010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415BEF 8A4605&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+05]&nbsp;&nbsp;&nbsp; <font color="#808000">;6th into al</font><br>
:00415BF2 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415BF4 0F8F95010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415BFA 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415BFC 0F8C8D010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C02 8A4606&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+06]&nbsp;&nbsp;&nbsp; <font color="#808000">;7th into al</font><br>
:00415C05 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415C07 0F8F82010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415C0D 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415C0F 0F8C7A010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C15 8A4607&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+07]&nbsp;&nbsp;&nbsp; <font color="#808000">;8th into al</font><br>
:00415C18 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415C1A 0F8F6F010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415C20 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415C22 0F8C67010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C28 8A5608&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov dl, byte ptr [esi+08]&nbsp;&nbsp;&nbsp; <font color="#808000">;9th into al</font><br>
:00415C2B 3AD1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp dl, cl<br>
:00415C2D 0F8F5C010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415C33 3AD3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp dl, bl<br>
:00415C35 0F8C54010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C3B 8A4609&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+09]&nbsp;&nbsp;&nbsp; <font color="#808000">;10th into al</font><br>
:00415C3E 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415C40 0F8F49010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415C46 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415C48 0F8C41010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C4E 8A460A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+0A]&nbsp;&nbsp;&nbsp; <font color="#808000">;11th into al</font><br>
:00415C51 3AC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, cl<br>
:00415C53 0F8F36010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F<br>
:00415C59 3AC3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, bl<br>
:00415C5B 0F8C2E010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl 00415D8F<br>
:00415C61 8A06&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi]&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">;1st into al</font><br>
:00415C63 3C38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, 38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;is it an 8</font><br>
:00415C65 0F8F24010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jg 00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;if greater jump away</font><br>
:00415C6B 3C31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, 31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;is it one</font><br>
:00415C6D 0F8C1C010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jl
00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;less than 1 then jump away</font><br>
:00415C73 384E01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp byte ptr [esi+01], cl&nbsp; <font color="#808000">;is 2nd digit=9</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;(cl=39) this one must be=9</font></font></p>
<p><font face="Courier New" size="2">:00415C76 0F8513010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">;if not equal 9 then jump away</font><br>
:00415C7C 52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push edx<br>
:00415C7D E816010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415C82 8BF8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov edi, eax<br>
:00415C84 8A4607&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+07]&nbsp;&nbsp;&nbsp; <font color="#808000">;8th into al</font><br>
:00415C87 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415C88 E80B010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415C8D 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415C8F 8A4605&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+05]&nbsp;&nbsp;&nbsp; <font color="#808000">;6th into al</font><br>
:00415C92 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415C93 E800010000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415C98 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415C9A 8A4603&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+03]&nbsp;&nbsp;&nbsp; <font color="#808000">;4th into al</font><br>
:00415C9D 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415C9E E8F5000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415CA3 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415CA5 8A4601&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+01]&nbsp;&nbsp;&nbsp; <font color="#808000">;2nd into al</font><br>
:00415CA8 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415CA9 E8EA000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415CAE 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415CB0 8A06&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">;1st into al</font><br>
:00415CB2 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415CB3 E8E0000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415CB8 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415CBA 8A4606&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+06]&nbsp;&nbsp;&nbsp; <font color="#808000">;7th into al</font><br>
:00415CBD 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415CBE E8D5000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415CC3 03F8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, eax<br>
:00415CC5 8A4604&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+04]&nbsp;&nbsp;&nbsp; <font color="#808000">;5th into al</font><br>
:00415CC8 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415CC9 E8CA000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00415D98<br>
:00415CCE 03C7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add eax, edi<br>
:00415CD0 6A0A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push 0000000A<br>
:00415CD2 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cdq<br>
:00415CD3 59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop ecx<br>
:00415CD4 F7F9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
idiv ecx<br>
:00415CD6 8D45DC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea eax, dword ptr [ebp-24]<br>
:00415CD9 52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push edx<br>
* Possible StringData Ref from Data Obj ->"%d"<br>
                                  |<br>
:00415CDA 686CE14600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push 0046E16C<br>
:00415CDF 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415CE0 E86D2D0100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00428A52<br>
:00415CE5 8A4602&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+02]&nbsp;&nbsp;&nbsp; <font color="#808000">;mov 3rd into al</font><br>
:00415CE8 83C42C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add esp, 0000002C<br>
:00415CEB 3A45DC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, byte ptr [ebp-24]&nbsp;&nbsp;&nbsp; <font color="#808000">;is it the same</font><br>
:00415CEE 0F859B000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jne 00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;if not jump away</font><br>
<br>
more code  follow here.......................<br>
<br>
* Possible StringData Ref from Data Obj ->"%02d"<br>
                                  |<br>
:00415D6C 6848EB4600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push 0046EB48<br>
:00415D71 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push eax<br>
:00415D72 E8DB2C0100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call 00428A52<br>
:00415D77 8A4609&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+09]&nbsp;&nbsp;&nbsp; <font color="#808000">;mov 10th to al</font><br>
:00415D7A 83C41C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add esp, 0000001C<br>
:00415D7D 3A45E8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, byte ptr [ebp-18]&nbsp;&nbsp;&nbsp; <font color="#808000">;is it the same</font><br>
:00415D80 750D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;if not jump away</font><br>
:00415D82 8A460A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov al, byte ptr [esi+0A]&nbsp;&nbsp;&nbsp; <font color="#808000">;mov 11th to al</font><br>
:00415D85 3A45E9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cmp al, byte ptr [ebp-17]&nbsp;&nbsp;&nbsp; <font color="#808000">;is it the same</font><br>
:00415D88 7505&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00415D8F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">;if not jump away</font><br>
:00415D8A 6A01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push 00000001<br>
:00415D8C 58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop eax<br>
:00415D8D EB02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp 00415D91<br>
:00415D8F 33C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xor eax, eax&nbsp;&nbsp;&nbsp; <font color="#808000">;If you pass from all cmp and jmp then it returns
&quot;Good Guy&quot; else fake registration! Patch it to push 01 and it will
always register (any number!)</font><br>
* Referenced by a (U)nconditional or (C)onditional Jump at Address:<br>
|:00415D8D(U)<br>
|<br>
:00415D91 5F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop edi<br>
:00415D92 5E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop esi<br>
:00415D93 5B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop ebx<br>
:00415D94 C9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
leave<br>
:00415D95 C20400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret 0004<br>
End of code snippet.</font></p>
<p><font size="2"><font color="#000000">The summary of this long validation routine is:<br>
<br>
1. The license no. must be 11 chars<br>
2. All must be digits, no letters allowed!<br>
3. First digit cannot be&nbsp; 0 or&nbsp; 9<br>
4. Second digit must always be&nbsp; 9.<br>
5. The third digit should always be equal to [ebp-24]<br>
6. The last two digits (i.e. 10th and 11th digits) must be equal to [ebp-18].
[ebp-18] returns two digits which are 10th and 11th digits respectively. The
digit returned by [ebp-17] is 11th digit. [NOTE: Do ? *(ebp-17) and the number
in ASCII is important.]<br>
&nbsp;</font>&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><u>End Of First Approach</u>.</b></font></p>
<hr>
<p><font size="2"><b>Second Approach: </b>This software only allows you to
install Two Trial Version. After installing two trial version either you should
register it, continue to use Demo Version or delete it from your computer. The
choice is up to you. Now, in this second approach I'll teach you how to modify
the software so that you could install the Trial Version as long as you wish. .
but who wants to anyway, when he can have a real crack? :-). Open
&quot;fs99v505.exe&quot; file with WinZip. Now, you should see
&quot;505setup.exe&quot; file along with other files. I think it's on top.
Extract it to &quot;\Windows\temp&quot; then fire-up W32Dasm and dead list
&quot;505setup.exe&quot; file. Click on String Data Reference and look for
&quot;You have already have two 30-day free trial...&quot; double click it.
Scroll up a bit. Now, you should be seeing;</font></p>

<p><font face="Courier New" size="2">00401A1C
807DF002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmp byte ptr
[ebp-10], 02 <font color="#808000"> ;compares whether you have</font>  <font color="#808000"> already installed two trial version or
not.</font></font></p>

<p><font face="Courier New" size="2">00401A20 7530&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00401A52&nbsp;&nbsp;&nbsp; <font color="#808000">;If yes then it returns &quot;You have
already...&quot; else allows you to install another copy of Trial Version. Now
what you can do is; change this jne to jmp(i.e change 7530 to EB30) so that either the comparision fails
or not it still allows you to install Trial Version as long as you wish.</font>&nbsp;
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font size="2"><u><b>End Of Second Approach</b></u></font></p>

<hr>
<p><font size="2"><b>Third Approach: </b>In this third approach, I'll teach you
to installed a fully functional version of FullShot99 right away. This approach
is quite similar to the First one. So, in this you will not have to work too
hard. Let's get started. As soon you doubleclick on the compressed zip
executable it asks for a license number. Ok 'nuff with words, let's pass to
action! OK. run fs99v505.exe and fire S-ICE, let's put a breakpoint on
GetDlgItemTextA and leave S-ICE. Edit your fake license number (should be 11
numbers long, till now you should know why, Don't you? If NO! then look above at
First Approach). Push the button to confirm, and softice pops , press F11 and
you are right at this line:</font><br>
<br>
<font face="Courier New" size="2">* Reference To: USER32.GetDlgItemTextA,
Ord:0104h<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|<br>
:00417739 FF153C034200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Call dword ptr [0042033C]<br>
:0041773F EB10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jmp 00417751&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;--
here.</font></font></p>

<font face="Courier New" size="2">OK. Let's step inside 505setup.exe and jump to
00417751</font>
<p><font face="Courier New" size="2">:00417751 5D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop ebp<br>
:00417752 C20C00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret 000C</font></p>
<font face="Courier New" size="2">After the ret you're at 00401F08;</font>
<p><font face="Courier New" size="2">:00401F03 E81B580100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call 00417723&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;--
here it calls GetDlgItemTextA.</font></font></p>
<p><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
:00401F08 56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push esi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">&lt;-- you're here.</font></font></p>
<p><font face="Courier New" size="2">:00401F09 E8D6030000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call 004022E4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;-- this is a function,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and it returns a boolean value<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(true or false), according to the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
license no. entered before.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Actually it checks if the license<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
length is 11 numbers and performs&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
calculations with every number of the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
license. It also checks whether the&nbsp;
~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first number is &gt;=1 and &lt;=8 and the&nbsp;&nbsp;&nbsp;
~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
second number must be 9 (better follow
~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
this)</font></font></p>
<p><font face="Courier New" size="2">:00401F0E 85C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
test eax, eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;--
this check returns 0.</font></font></p>
<p><font face="Courier New" size="2">:00401F10 59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop ecx<br>
<br>
* Possible StringData Ref from Data Obj -&gt;&quot;TRIAL&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|<br>
:00401F11 BF04814200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov edi, 00428104<br>
:00401F16 7558&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
jne 00401F70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;-- therefore change this &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to jmp 00401F70</font></font></p>
<p><font face="Courier New" size="2">* Referenced by a (U)nconditional or
(C)onditional Jump at Addresses:<br>
|:00401F16(C), :00401F26(C)<br>
|<br>
:00401F70 6A05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push 00000005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#808000">&lt;--
this is TRIAL length &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5, as you see)</font></font></p>
<p><font face="Courier New" size="2">:00401F72 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push edi<br>
:00401F73 56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push esi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#808000">&lt;-- this is the fake</font> <font color="#808000"> license</font></font></p>
<p><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
:00401F74 E817D50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
call 0040F490&nbsp;<font color="#808000">&lt;-- this function returns&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;