<html>
<head><title>Hans Wong Cracking Tut</title></head>
<body bgcolor="black" link="#3366FF" vlink="#CCCCCC" alink="#FFFFFF">
<font color="#999999">
Hans Wong Cracking Tutorial For Rookie Player<br>
Title : Practical One<br>
Written By Hans Wong (a rookie player too)<br>
Date : April 10 2000<br></font><p>
<font color="white" size=+3>
<center>
    <p>Playing With mIRC Version 5.7<br>
      Part One-Patch </p>
  </center>
  </font>
<table width="98%" border="0">
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Aims</font></td>
    <td width="1%"> 
      <div align="center"><font color="#CCCCCC">:</font></div>
    </td>
    <td width="81%"><font color="#CCCCCC">Patch the program so that we can enter 
      any name/serials</font></td>
  </tr>
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Target</font></td>
    <td width="1%"><font color="#CCCCCC">:</font></td>
    <td width="81%"><font color="#CCCCCC">mirc32.exe</font></td>
  </tr>
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Sizes</font></td>
    <td width="1%"><font color="#CCCCCC">:</font></td>
    <td width="81%"><font color="#CCCCCC">1,339,392 Bytes</font></td>
  </tr>
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Protection</font></td>
    <td width="1%"> 
      <div align="center"><font color="#CCCCCC">:</font></div>
    </td>
    <td width="81%"><font color="#CCCCCC">Name/Serials check</font></td>
  </tr>
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Tools</font></td>
    <td width="1%"> 
      <div align="center"><font color="#CCCCCC">:</font></div>
    </td>
    <td width="81%"><font color="#CCCCCC">W32dasm 8.93, Papers and pen, Hex Editor( 
      I use hex workshop)</font></td>
  </tr>
  <tr> 
    <td width="8%"><font color="#CCCCCC"></font></td>
    <td width="10%"><font color="#CCCCCC">Level</font></td>
    <td width="1%"> 
      <div align="center"><font color="#CCCCCC">:</font></div>
    </td>
    <td width="81%"><font color="#CCCCCC">Rookie (X) &nbsp;Starter ( ) &nbsp;All 
      Stars ( ) &nbsp;Super Stars ( )</font></td>
  </tr>
</table>
<blockquote> 
  <p><font color="#CCCCCC">These tutorials are written by a Rookie Player(Newbies) 
    of Cracking, and they are assume for newbies readers, if you are a cracking 
    master or have lots of experiences of cracking program, here are nothing new 
    and you may just delete it.<br>
    <br>
    I am so glad that I can write this tutorial, this is my first cracking tut 
    base on mIRC version 5.7. Why did I choose it? It is a very popular software 
    and it use a quite common protection method, I think it is a good practical 
    on cracking program. In this tutorial, I assume that you have some basic concepts 
    of cracking, as the title says this is a cracking practical, I am also going 
    to write some tuts about cracking theory, they will inculd assembly language, 
    cracking tips, how to use cracking tools, number system on computer, hardware 
    structure, etc. You may see them first. By the way, assembly language is very 
    important and useful for cracking, actually if you know more about assembly 
    language, you will get more power and easier on cracking, yes, I love assembly! 
    The other thing I want to mention here at first is cracking needs time, especially 
    for rookies(newbies), so when you decide to crack a program, make sure you 
    have plenty of time. After you have some basic concepts of cracking and have 
    time, the most important thing is please BE PATIENT, don't think about you 
    can crack it as easy as you think, you will always face different protection 
    method and you always face difficulty. One last thing here is all cracking 
    tutorials are for reference and learning purpose, if you want to be a real 
    cracker, you must crack a program without any tuts near you , remember, there 
    NO more than two program use the same protection method, we just give you 
    tips or the general ways of cracking.</font></p>
  <p><font color="#CCCCCC">OK, forget the bullshit, we start cracking now. First 
    of all, I downloaded mIRC V5.7 from &quot;download.cnet.com&quot;, after install 
    it, we try to run mirc32.exe to see that what protection method it use, we 
    always do this when each time we are going to crack a program, I know that 
    lots of program place register funtion near &quot;help&quot;, so I click on 
    &quot;hlep&quot; on the menu, I found that two items that will useful for 
    us, one is &quot;about&quot;, the other is &quot;register&quot;. OK, first 
    we click on &quot;About&quot;, a nag screen pop up and show us it is &quot;Unlicensed 
    Version&quot;, so I think if we register the program using our name correctly, 
    here will show our name, now, close the nag screen and click on &quot;register&quot;, 
    a small window pop up, it ask me to enter my full name and the registration 
    code, I enter my name and some number and then click on &quot;Register!&quot; 
    button, another small window pop up and show me &quot;Sorry, your registration 
    name and number don't match!&quot;, my registration fails because I just enter 
    any ramdom number, but this message is very important, write it down on a 
    paper. Why should I do it? Good question! We try to think about why the program 
    show me the message, it is because I enter a wrong registration number, so 
    the program must check our name and registration number to see that they match 
    or not, if not, register fails. I use following sentences to make it more 
    clearly : <br>
    </font></p>
  <blockquote> 
    <table width="103%" border="0">
      <tr> 
        <td><b><font color="#FFFFFF">If registration code don't match our name, 
          then go to fail message. &lt;----Will be change.</font></b></td>
      </tr>
      <tr> 
        <td><b><font color="#FFFFFF">If registration code match our name, then 
          registration success! </font></b></td>
      </tr>
    </table>
  </blockquote>
  <p><font color="#CCCCCC">What we need to do is to change the above sentences 
    to : </font></p>
  <blockquote> 
    <table width="103%" border="0">
      <tr> 
        <td><b><font color="#FFFFFF">If registration code don't match our name, 
          then registration success!</font></b></td>
      </tr>
      <tr> 
        <td><b><font color="#FFFFFF">If registration code match our name, then 
          registration success!</font></b></td>
      </tr>
    </table>
  </blockquote>
  <p><font color="#CCCCCC">Backup &quot;mirc32.exe&quot; to &quot;mirc32.exe.bak&quot;, 
    you will need it later. Run w32dasm 8.93 and disassemble mirc32.exe, you may 
    do this by clicking &quot;disassembler&quot;--&gt; &quot;open files to disassemble&quot;. 
    After a few minutes (sometimes it may take longer time depending on your file 
    size), all assembly code show! Don't worry if you are not familiar with it,still 
    remember the fail message we wrote down before? check the sentense on your 
    paper, or recall it from your brain, I remember the message is &quot;Sorry, 
    your registration name and number don't match!&quot;, go search it from &quot;Search&quot;--&gt; 
    &quot;find text&quot;, or &quot;Refs&quot;---&gt;&quot; string data references&quot;, 
    this time, there are a lots string data references and I need to scroll it 
    down and find it on each line, I feel very tired so I use &quot;Search&quot;---&gt;&quot;find 
    text&quot; to search it, but sometimes the &quot;String data References&quot; 
    are more powerful. After finish searching, we see the following:<br>
    </font></p>
  <blockquote> 
    <table width="111%" border="0">
      <tr> 
        <td colspan="3"><font color="#00CC00">* Possible Reference to String Resouce 
          ID=01912: &quot;mIRC Registration!&quot;</font></td>
      </tr>
      <tr> 
        <td width="14%">&nbsp;</td>
        <td width="24%">&nbsp;</td>
        <td width="62%">&nbsp;</td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B7B</font></td>
        <td width="24%"><font color="#FFFFFF">6878070000</font></td>
        <td width="62%"><font color="#FFFFFF">push 0000778</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B80</font></td>
        <td width="24%"><font color="#FFFFFF">E8F365F8FF</font></td>
        <td width="62%"><font color="#FFFFFF">call &nbsp;0041F178</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B85</font></td>
        <td width="24%"><font color="#FFFFFF">50</font></td>
        <td width="62%"><font color="#FFFFFF">push eax</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B86</font></td>
        <td width="24%"><font color="#FFFFFF">6A00</font></td>
        <td width="62%"><font color="#FFFFFF">push 00000000</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="62%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td colspan="3"><font color="#00CC00">* Possible Reference to String Resouce 
          ID=01913: &quot;Sorry, your registration name.......&quot;<font color="#FFFFFF">&lt;---find 
          here</font> </font></td>
      </tr>
      <tr> 
        <td width="14%">&nbsp;</td>
        <td width="24%">&nbsp;</td>
        <td width="62%">&nbsp;</td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B88</font></td>
        <td width="24%"><font color="#FFFFFF">6879070000</font></td>
        <td width="62%"><font color="#FFFFFF">push 0000779</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B8D</font></td>
        <td width="24%"><font color="#FFFFFF">E8E665F8FF</font></td>
        <td width="62%"><font color="#FFFFFF">call &nbsp;0041F178</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B92</font></td>
        <td width="24%"><font color="#FFFFFF">50</font></td>
        <td width="62%"><font color="#FFFFFF">push eax</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B93</font></td>
        <td width="24%"><font color="#FFFFFF">8B4508</font></td>
        <td width="62%"><font color="#FFFFFF">mov eax, dword ptr [ebp+08]</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498B96</font></td>
        <td width="24%"><font color="#FFFFFF">50</font></td>
        <td width="62%"><font color="#FFFFFF">push eax</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="62%"><font color="#FFFFFF"></font></td>
      </tr>
    </table>
  </blockquote>
  <p><font color="#CCCCCC">I scroll it up some lines and I found a conditional 
    jump : <br>
    </font></p>
  <blockquote> 
    <table width="99%" border="0">
      <tr> 
        <td colspan="3"><font color="#FFFFFF">* Referenced by a (U)nconditional 
          or (C)onditional Jump at Address:</font></td>
      </tr>
      <tr> 
        <td width="19%"><font color="#FFFFFF">| :00498AA1(C)</font></td>
        <td colspan="2"><font color="#FFFFFF"></font><font color="#FFFFFF">&lt;---(C) 
          means conditional Jump, write down this Address</font></td>
      </tr>
      <tr> 
        <td width="19%"><font color="#FFFFFF">|</font></td>
        <td width="26%"><font color="#FFFFFF"></font></td>
        <td width="55%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td width="19%"><font color="#FFFFFF">:00498B42</font></td>
        <td width="26%"><font color="#FFFFFF">6A00</font></td>
        <td width="55%"><font color="#FFFFFF">push 00000000</font></td>
      </tr>
      <tr> 
        <td width="19%"><font color="#FFFFFF"></font></td>
        <td width="26%"><font color="#FFFFFF"></font></td>
        <td width="55%"><font color="#FFFFFF"></font></td>
      </tr>
    </table>
  </blockquote>
  <p><font color="#CCCCCC">Up to now, we know that there is a conditional jump( 
    similar to &quot;If......Then....&quot; statement in high level language) 
    at address &quot;00498AA1&quot;, this jump will take me to the fail message, 
    OK, I found our target! Yes, why not take a look at the conditional jump? 
    Let's go to address &quot;00498AA1&quot;, you may do this by clicking &quot;Goto&quot;---&gt;&quot;Goto 
    Code Location&quot; and enter &quot;00498AA1&quot;, click &quot;OK&quot;, 
    you will see : <br>
    </font></p>
  <blockquote> 
    <table width="108%" border="0">
      <tr> 
        <td colspan="3"><font color="#FFFFFF"></font><font color="#FFFFFF"></font><font color="#FFFFFF">* 
          Reference To:User32.SendDlgItemMessageA,Ord:0000h</font></td>
        <td><font color="#FFFFFF" size="-2">&lt;----W32 API that will show us 
          registration window</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF"></font></td>
        <td width="25%"><font color="#FFFFFF"></font></td>
        <td width="20%"><font color="#FFFFFF"></font></td>
        <td width="41%"><font color="#FFFFFF" size="-2"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498A8B</font></td>
        <td width="25%"><font color="#FFFFFF">E841800500</font></td>
        <td width="20%"><font color="#FFFFFF">call &nbsp;004F0AD1</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2"> &lt;----Call API that 
          show us the registration window</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498A90</font></td>
        <td width="25%"><font color="#FFFFFF">68334A5000</font></td>
        <td width="20%"><font color="#FFFFFF">push 00504A33</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2">&lt;----Accept entered 
          Name/Serial </font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498A95</font></td>
        <td width="25%"><font color="#FFFFFF">684C465000</font></td>
        <td width="20%"><font color="#FFFFFF">push 0050464C</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2">&lt;----Accept entered 
          Serial/Name </font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498A9A</font></td>
        <td width="25%"><font color="#FFFFFF">E8E5FBFFFF</font></td>
        <td width="20%"><font color="#FFFFFF">call &nbsp;00498684</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2">&lt;----Call a funtion 
          to calculate and check Name/Serial</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498A9F</font></td>
        <td width="25%"><font color="#FFFFFF">85C0</font></td>
        <td width="20%"><font color="#FFFFFF">test eax, eax</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2">&lt;----Test registration 
          success or not</font></td>
      </tr>
      <tr> 
        <td width="14%" bgcolor="#33CC00"><font color="#990033"><b>:00498AA1</b></font></td>
        <td width="25%" bgcolor="#33CC00"><font color="#FFFFFF">0F849B000000</font></td>
        <td width="20%" bgcolor="#33CC00"><font color="#FFFFFF">je &nbsp;&nbsp;00498B42</font></td>
        <td width="41%"><font color="#FFFFFF" size="-2">&lt;----If name and serial 
          don't match, jump to fail window</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498AA7</font></td>
        <td width="25%"><font color="#FFFFFF">BE3C9D4F00</font></td>
        <td width="20%"><font color="#FFFFFF">mov esi, 004F9D3C</font></td>
        <td width="41%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498AAC</font></td>
        <td width="25%"><font color="#FFFFFF">BF4C465000</font></td>
        <td width="20%"><font color="#FFFFFF">mov edi, 0050464C</font></td>
        <td width="41%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
    </table>
  </blockquote>
  <p><font color="#CCCCCC">In w32dasm, cover with green bar means that the line 
    contain a jump instruction. These few line do the follow thing : first, it 
    pop up a registration window and ask us to enter our full name and registration 
    code(serial number), after we entered, the program calculate the real serial 
    number according to the name we entered, and then compare the real serial 
    and the serial we entered, if they match, the program store &quot;1&quot; 
    in &quot;eax&quot;, otherwise, &quot;eax&quot; will contain &quot;0&quot;. 
    The conditional jump check the number store in &quot;eax&quot;, if &quot;eax&quot;=1, 
    then it will NOT jump to fail message(Registration success), if &quot;eax&quot;=0, 
    it will jump to Address &quot;00498B42&quot; and show us the fail message. 
    It that clear enough? What we going to do here is to Patch the jump make it 
    never jump to fail message! Let's take a quick review on some Assembly : <br>
    </font></p>
  <blockquote> 
    <table width="75%" border="0">
      <tr> 
        <td width="27%"><font color="#FFFFFF">:00498AA1</font></td>
        <td width="73%"><font color="#FFFFFF">&lt;----This is Memory Address or 
          Memory Location</font></td>
      </tr>
      <tr> 
        <td width="27%"><font color="#FFFFFF">0F849B000000</font></td>
        <td width="73%"><font color="#FFFFFF">&lt;----Machine Code In Hexdecimal 
          Form </font></td>
      </tr>
      <tr> 
        <td width="27%"><font color="#FFFFFF">je 00498B42</font></td>
        <td width="73%"><font color="#FFFFFF">&lt;----Assembly Program Code</font></td>
      </tr>
    </table>
    <p><font color="#FFFFFF">To explain how to patch the program, we must familiar 
      with Hexdecimal number first, see the table below : <br>
      </font></p>
    <table width="75%" border="1">
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">Decimal</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">Hexdecimal</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">Binary</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0000</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0001</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">2</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">2</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0010</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">3</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">3</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0011</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">4</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">4</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0100</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">5</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">5</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0101</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">6</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">6</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0110</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">7</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">7</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">0111</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">8</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">8</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1000</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">9</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">9</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1001</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">10</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">A</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1010</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">11</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">B</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1011</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">12</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">C</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1100</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">13</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">D</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1101</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">14</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">E</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1110</font></div>
        </td>
      </tr>
      <tr> 
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">15</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">F</font></div>
        </td>
        <td width="22%"> 
          <div align="center"><font color="#FFFFFF">1111</font></div>
        </td>
      </tr>
    </table>
    <p><font color="#FFFFFF">This table is quite useful especially if you need 
      to convert number between Binary and Hexdecimal, further details please 
      see my other tuts on &quot;Cracking concept&quot;. To represent a single 
      Hexdecimal number, we only need a nibble( half byte which is 4 bits), so 
      TWO Hexdecimal digits will always need ONE byte to represent. The machine 
      code in memory address &quot;00498AA1&quot; is &quot;0F849B000000&quot; 
      which is total 12 digits, so it will use 12/2=6 bytes. To patch the jump, 
      we need to replace &quot;0F849B000000&quot; with another 6 bytes instruction, 
      this 6 bytes instruction will make the program never jump to the fail message. 
      Here you have some choices : <br>
      </font></p>
    <table width="87%" border="1">
      <tr> 
        <td width="29%"> 
          <div align="center"><b><font color="#FFFFFF">Assembly Code</font></b></div>
        </td>
        <td width="29%"> 
          <div align="center"><b><font color="#FFFFFF">Machine Code</font></b></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF"><b>Description</b></font></div>
        </td>
      </tr>
      <tr bordercolor="#FF3366"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">inc eax</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">40</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">increase 1 to eax register</font></div>
        </td>
      </tr>
      <tr bordercolor="#FF3366"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">dec eax</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">48</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">decrease 1 to eax register</font></div>
        </td>
      </tr>
      <tr bordercolor="#FFFF66"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">inc ebx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">43</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">increase 1 to ebx register</font></div>
        </td>
      </tr>
      <tr bordercolor="#FFFF66"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">dec ebx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">4B</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">decrease 1 to ebx register</font></div>
        </td>
      </tr>
      <tr bordercolor="#3366FF"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">inc ecx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">41</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">increase 1 to ecx register</font></div>
        </td>
      </tr>
      <tr bordercolor="#3366FF"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">dec ecx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">49</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">decrease 1 to ecx register</font></div>
        </td>
      </tr>
      <tr bordercolor="#00FF00"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">inc edx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">42</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">increase 1 to edx register</font></div>
        </td>
      </tr>
      <tr bordercolor="#00FF00"> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">dec edx</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">4A</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">decrease 1 to ecx register</font></div>
        </td>
      </tr>
      <tr> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">nop</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">90</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF"><font color="#FFFFFF">nop 
            means do nothing</font></font></div>
        </td>
      </tr>
      <tr> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">je</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">74 xx</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF"><font color="#FFFFFF">je means 
            jump if equal</font></font></div>
        </td>
      </tr>
      <tr> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">jne</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">75 xx</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF"><font color="#FFFFFF">jne 
            means jump if not equal</font></font></div>
        </td>
      </tr>
      <tr> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">je</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">0F84 xxxx xxxx</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF">jump if equal</font></div>
        </td>
      </tr>
      <tr> 
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">jne</font></div>
        </td>
        <td width="29%"> 
          <div align="center"><font color="#FFFFFF">0F85 xxxx xxxx</font></div>
        </td>
        <td width="42%"> 
          <div align="center"><font color="#FFFFFF"><font color="#FFFFFF">jemp 
            if not equal</font></font></div>
        </td>
      </tr>
    </table>
    <p><font color="#FFFFFF">This table is very useful for newbies, I use different 
      color to separate each group of inc/dec instructions, actually, increase 
      1 and then decrease 1 to a register means do nothing to the program, but 
      each inc/dec instructions fill TWO bytes of memory, so it is a good way 
      to replace an instruction with the same numbers of byte, also, it can nop 
      the operation. But please remember, we MUST use inc and dec together, one 
      inc instruction corresponding to one dec instruction, the total number of 
      inc instructions always equal to the total number of dec instructions.<br>
      <br>
      The instruction &quot;nop&quot; means nop operation, the program will do 
      nothing. We can use a single nop instruction to fill ONE byte of memory.<br>
      <br>
      Instruction je and jne are both conditional jump, when it is a short jump(74/75), 
      xx means number of bytes to jump away, when it is a far jump(0F84/0F85), 
      xxxx xxxx is memory address to jump to. Further details please refer to 
      my &quot;Cracking Concept&quot; tuts. Here, I want to say is convert je 
      to jne or jne to je can also patch the program, you just need to change 
      74 to 75(or 75 to 74), 0F84 to 0F85(or 0F85 to 0F84). By doing such change, 
      we can enter any serial EXCEPT the real one.<br>
      <br>
      </font>
  </blockquote>
  <p><font color="#FFFFFF"><font color="#CCCCCC">OK, I think now we have all knowledges 
    we need, it is time to patch the program, at address &quot;00498A8A&quot;, 
    the instruction &quot;0F849B000000&quot; use 6 bytes of memory, you can use 
    &quot;41494048424A&quot; or &quot;434B40414849&quot; or &quot;9090424A9090&quot; 
    to replace it and nop it, if you don't understand what these code does, go 
    see the table above again.<br>
    <br>
    Now, make sure the green bar covered at address &quot;00498AA1&quot;, at the 
    bottom of w32dasm, you can see &quot;Line 329132 Pg 5232 of 8284 Code Data@00498AA1 
    @Offset000980A1h in File mirc32.exe&quot; write down the number(without h, 
    it just means Hex) just after Offset, we need it for Hex Editor.<br>
    <br>
    Now load your program to a Hex Editor, I use Hex Workshop, another good choice 
    is HIEW. After it we search Offset 000980A1, the cursor should land before 
    &quot;0F 84 9B 00 00 00&quot;, replace these 6 bytes with our code, then save 
    the program.<br>
    <br>
    Exciting time! We are going to test our job. Run mIRC and go to &quot;Help&quot;----&gt;&quot;Register&quot;, 
    I enter &quot;Hans Wong&quot; in the name field and enter &quot;88&quot; in 
    the registration code field, yes, 88 is my lucky number, press &quot;OK&quot;, 
    the program say &quot;Thank you for registration!&quot;. If this is the first 
    time you crack a program, you must feel very exciting and happly like me, 
    yes, we patch it! Go to &quot;About&quot; menu, it show me &quot;Licensed 
    to Hans Wong&quot;, that's great! But is that all FINISH? Never!<br>
    <br>
    Quit mIRC V5.7 and rerun it, we always do this after we &quot;finish&quot; 
    cracking. Go to &quot;Help&quot;----&gt;&quot;About&quot; again, what will 
    you see? It show me &quot;Unlicensed Version&quot;, what? Why it still unregister? 
    I just patch it and register it before! Don't worry about, please keep calm 
    and think about : Why it still unregister when the program rerun? The answer 
    is when the program start running, it must check our name and serial again 
    to see that we are seccessfully register or not. There some common ways that 
    the program store our name/serials : <br>
    <br>
    After the first time we register the program, the program may store these 
    information to a key file, when the program rerun, it check that whether the 
    key file exist or not, if it found the key file, the program check our name/serial 
    stores in the key file again, if the name and the serial don't match, the 
    program will still unregistered. This is a bit more difficult to crack especially 
    if the key file were encrypt by the program, sometime you even don't know 
    what key file the program created, but there are some useful tools to help 
    us to monitor the change of any files, such as filemon.<br>
    <br>
    The other way(moer common) is, the program may store our name and serial to 
    window registry table, when first time we register the program, it create 
    some keys to the window registry, next time the program rerun, it will fetch 
    these information and check it again, mIRC use this method. Let's see how 
    we can patch it.<br>
    <br>
    First, I go to check the window registry table, you may do this by clicking 
    &quot;Start&quot;----&gt;&quot;Run&quot;, type &quot;Regedit&quot; at the 
    command box, I found my name and serial at &quot;HKEY_CURRENT_USER\Software\mIRC&quot;, 
    so I am sure that this program will fetch the serial number from registry 
    and check again. To fetch information from window registry table, the Microsoft 
    provide some API to finish these works, some example are : &quot;ADVAPI32.RegOpenKeyA&quot;, 
    &quot;ADVAPI32.RegQuerryValueA&quot;. So I back to w32dasm and try to search 
    these string, I found more than one &quot;RegquerryValueA&quot;, near it I 
    also try to patch some jump, but after a few trial, I still fail to patch 
    the program successfully, at these time, I feel too bad, but I never think 
    about give up, remember I said at the beginning? Cracking need time and we 
    should always be patient, here I want to point out another thing : &quot;When 
    you face difficulty and you can't solve it, ASK some people else&quot;, I 
    post some message on some cracking forum, foutunity, lots of people support 
    me and give me lots of information. Here I need to say thanks to Krobar and 
    Snake, they send me some quite useful tuts, from these tuts, I know that in 
    the older version of mIRC, patching the code near &quot;RegQuerryValueA&quot; 
    can bypass the protection, but it seems doesn't work at Version 5.7, but anyway, 
    I learn more and increase lots of experience.<br>
    <br>
    Sorry, lots of bullshits again, but I think telling my experience will increase 
    the experience for newbies too. Back to the work, actually I can't still get 
    an exact solution now, I sit infront of my computer and suddenly, I think 
    the following : </font></font><font color="#FFFFFF"><br>
    </font> </p>
  <blockquote>
    <table width="103%" border="0">
      <tr> 
        <td colspan="4"><font color="#FFFFFF"><b>During registration</b></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step one</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">We enter our name and serial number.</font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step two</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">The program recieve the information 
          above.</font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step three</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">Call a function to calculate and 
          compare them.</font></td>
        <td width="32%"><font color="#FFFFFF" size="-1">&lt;----Please attention 
          to this call</font><font color="#FFFFFF"> </font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step four</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">Process a jump to decide register 
          or not.</font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
    </table>
    <br>
    <table width="103%" border="0">
      <tr> 
        <td colspan="4"><font color="#FFFFFF"><b>During rerunning the program</b></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step one</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">The program querry window registry 
          table. </font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step two</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">The program receive our name and 
          serial. </font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step three</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">Call the same function to compare 
          name/serial. </font></td>
        <td width="32%"><font color="#FFFFFF" size="-1">&lt;----Same call</font></td>
      </tr>
      <tr> 
        <td width="13%"><font color="#FFFFFF">Step four</font></td>
        <td width="1%"><font color="#FFFFFF">:</font></td>
        <td width="54%"><font color="#FFFFFF">According to the result, decide 
          register or not.</font></td>
        <td width="32%"><font color="#FFFFFF"></font></td>
      </tr>
    </table>
    <br>
    <font color="#FFFFFF">We note that whenever the prgram get our name and serial 
    number from entering or from window registry table, it will always call the 
    same function to calculate and compare the serial number, so it doesn't matter 
    how many place the program check our name and serial, we just need to patch 
    one call to finish our work. Now, what we going to do is take a look at this 
    call and see any jump we can patch. You may ask, Which call should I look 
    at? OK, back to w32dasm and back to address &quot;00498AA1&quot;, I am sure 
    that you must remember it, above this address two lines, you will find a call 
    at address &quot;00498A9A&quot;, this call will take us to address &quot;00498684&quot;, 
    go to it and you will see some other list of lines : <br>
    <br>
    </font> 
    <table width="119%" border="0">
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498684</font></td>
        <td width="23%"><font color="#FFFFFF">55</font></td>
        <td width="24%"><font color="#FFFFFF">push ebp</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----Starting of the 
          call</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:00498685</font></td>
        <td width="23%"><font color="#FFFFFF">8BEC</font></td>
        <td width="24%"><font color="#FFFFFF">mov ebp, esp</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----Scroll down until 
          you see the following lines</font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986DC</font></td>
        <td width="23%"><font color="#FFFFFF">68204A5100</font></td>
        <td width="24%"><font color="#FFFFFF">push 00514A20</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----push our serial 
          number to stack</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986E1</font></td>
        <td width="23%"><font color="#FFFFFF">6820495100</font></td>
        <td width="24%"><font color="#FFFFFF">push 00514920</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----push our name 
          string to stack</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986E6</font></td>
        <td width="23%"><font color="#FFFFFF">E8A1FEFFFF</font></td>
        <td width="24%" bgcolor="#FF3366"><font color="#FFFFFF">call 0049858C</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----Another important 
          call to calculate real serial</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986EB</font></td>
        <td width="23%"><font color="#FFFFFF">85C0</font></td>
        <td width="24%"><font color="#FFFFFF">test eax, eax</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----test eax=0 or 
          not </font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986ED</font></td>
        <td width="23%"><font color="#FFFFFF">7407</font></td>
        <td width="24%"><font color="#FFFFFF">je 004986F6</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----jemp to address 
          &quot;004986F6&quot; if eax=0</font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986EF</font></td>
        <td width="23%"><font color="#FFFFFF">B801000000</font></td>
        <td width="24%"><font color="#FFFFFF">mov eax, 00000001</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----move 1 to eax(registration 
          success) </font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:004986F4</font></td>
        <td width="23%"><font color="#FFFFFF">EB74</font></td>
        <td width="24%"><font color="#FFFFFF">jmp 0049876A</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----jump to return 
          call, will back to &quot;00498A9F&quot;</font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"> 
          <div align="center"><font color="#FFFFFF">:</font></div>
        </td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:0049876A</font></td>
        <td width="23%"><font color="#FFFFFF">5F</font></td>
        <td width="24%"><font color="#FFFFFF">pop edi</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:0049876B</font></td>
        <td width="23%"><font color="#FFFFFF">5E</font></td>
        <td width="24%"><font color="#FFFFFF">pop esi</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:0049876C</font></td>
        <td width="23%"><font color="#FFFFFF">5B</font></td>
        <td width="24%"><font color="#FFFFFF">pop ebx</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:0049876D</font></td>
        <td width="23%"><font color="#FFFFFF">5E</font></td>
        <td width="24%"><font color="#FFFFFF">pop ebp</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF">:0049876E</font></td>
        <td width="23%"><font color="#FFFFFF">C20800</font></td>
        <td width="24%"><font color="#FFFFFF">ret 0008</font></td>
        <td width="39%"><font color="#FFFFFF" size="-1">&lt;----Return to address 
          &quot;00498A9F&quot; </font></td>
      </tr>
      <tr> 
        <td width="14%"><font color="#FFFFFF"></font></td>
        <td width="23%"><font color="#FFFFFF"></font></td>
        <td width="24%"><font color="#FFFFFF"></font></td>
        <td width="39%"><font color="#FFFFFF" size="-1"></font></td>
      </tr>
    </table>
    <font color="#FFFFFF"> <br>
    Take a small notice to the call covered with red bar. We will study and discuss 
    this call in the following tuts, it is quite important if we want to find 
    out a real serial and write our own KeyGen, but this time, we may forget it.<br>
    <br>
    I am sure that you all notice that there are another eax test and je instruction, 
    do you remember that in address &quot;00498AA1&quot;, the jump will take us 
    to fail message if eax=0, so here eax must NOT allow to equal to zero, I also 
    see that there is an instruction that will store 1 to eax, that's good job, 
    but before it, there is an je instructoin. I am sure that you all know what 
    should do if you read this tutorial from beginning, yes, nop the je instruction!<br>
    <br>
    Did you still remember that I told you to backup mirc32.exe to mirc32.exe.bak? 
    delete the last patch one and load mirc32.exe.bak(make sure it is the original 
    one and haven't modify) to Hex Editor, patch the code and save our program 
    to mirc32.exe. </font> </blockquote>
  <font color="#CCCCCC"> Run the program and register it again using your name 
  and any serial number, after the program saying &quot;Thank you for registration!&quot;, 
  quit the program and rerun it, this time, the program is still register and 
  in the &quot;About&quot; menu, it show us &quot;Licence to <i>your name string&quot;. 
  </i>We really finish patching it, congraduation Rookie Players!<br>
  <br>
  Now you may write your own patch file and distribute it to the net or share 
  it to your friends, your friends will think you are quite helpful and you will 
  feel very proud. You may go to see my other tuts to learn how to write your 
  own patch, there I will introduce some useful tools to finish these work, actually 
  they all easy to use and samll in file size, I use &quot;Ptasiek's CrackMaker 
  1.3&quot;, a good patcher.<br>
  <br>
  Finally I need to greets to all writers on cracking tuts, they all write perfect 
  tuts and provide lots of information about cracking, anti-protection, reverse-engineer, 
  etc. Some people I even forgot their name and sorry here I can't list them all.<br>
  <br>
  Special thanks to Krobar and Snake, without them I can't finish writing this 
  tut, they provide lots of information on cracking mIRC series. Thanks a lot!<br>
  <br>
  All Rookie Player(Newbies) should take a look at Krobar's collecting of cracking 
  tuts site, it contain lots of cracking tuts and you can increase your cracking 
  experience, from the links inside it , you can download all cracking tools I 
  mentioned in this tuts, by the way, if you didn't install SoftIce yet, please 
  goto <a href="http://zor.org/krobar">http://zor.org/krobar/</a>, find a link 
  to download SoftIce and see some tuts about it, we will need it at the next 
  part of tuts.<br>
  <br>
  On the next parts of tuts, I will discuss how to find out a real serial number 
  according to our name, and I will also discuss how to write our own KeyGen. 
  these parts will more interesting and more attraction, they will release soon.<br>
  </font></blockquote>
