• 标 题:Crack之亲历手迹2--我的第一个注册机 (2千字)
  • 作 者:y97523
  • 时 间:2002-3-9 19:55:42
  • 链 接:http://bbs.pediy.com

Crack之亲历手迹2--我的第一个注册机
//-------------------------------------------------
目标程序:icontoy2.exe:392 KB (401,920 字节)
          绿色软件,单独exe文件
          Delphi编写无需pakage支持,未加壳
破解目标:找到注册码,最好做出注册机
//--------------------------------------------------
破解过程:
1。用IDA反汇编。
2。用SoftICE,下bpx getwindowtext
              bpx getwindowtexta
              bpx getwindowtextw
              bpx getdlgitemtext
              bpx getdlgitemtexta
              bpx getdlgitemtextw结果只栏到TApplication::GetTitle中的程式,并未拦截到程序获取注册码
  的过程。
  ???或许Delphi的TControl::GetText另有函数?(详细见2002-2-15日记)
3。用W32Dasm反汇编,找到Registration key error!字符串,点击后直接进入了OnOK的处理函数,That's OK!
4。在IDA中找到这个处理函数,
  分析发现:
  首先打开注册表,将用户名、Key写入注册表
  mov    edx, offset _str__software_akato_0.Text
  mov    eax, ebx
  call    @Registry@TRegistry@OpenKey$qqrx17System@AnsiString4bool
  lea    edx, [ebp+var_4]
  mov    eax, [esi+270h]
  call    @TControl@GetText ; TControl::GetText
  mov    ecx, [ebp+var_4]
  mov    edx, offset _str_reg_key_0.Text
  mov    eax, ebx
  call    @TRegistry@WriteString ; TRegistry::WriteString
  然后再从注册表中读出来
  lea    ecx, [ebp+var_8]
  mov    edx, offset _str_reg_key_0.Text
  mov    eax, ebx
  call    @TRegistry@ReadString ; TRegistry::ReadString
  mov    edx, [ebp+var_8]
  mov    eax, edi
  call    @System@@LStrAsg$qqrv ; System __linkproc__ LStrAsg(void)
  再与十个可能的注册码一一比较
  mov    eax, [edi]
  mov    edx, offset _str_R3212959_0.Text
  call    @System@@LStrCmp$qqrv ; System __linkproc__ LStrCmp(void)
  jz      short loc_439CEA
  mov    eax, [edi]
  mov    edx, offset _str_8M6M8DTA_0.Text
  call    @System@@LStrCmp$qqrv ; System __linkproc__ LStrCmp(void)
  jnz    short loc_439D36
  如是十个注册码中的一个则显示注册成功,或则显示注册失败
  mov    eax, offset _str_Registration_ke.Text
  call    @Dialogs@ShowMessage$qqrx17System@AnsiString ; Dialogs::ShowMessage(System::AnsiString)
  现在我们可以知道他的注册码了,只能为下面的十个字串中的一个
  8M6M8DTA
  R3212959
  12959TAT
  322223XL
  reggy322
  reggy105
  reg10515
  reg15810
  22322322
  32222332
5。使用VC++6.0做出注册机

Email:y97523@hotmail.com