Otoboku 发表于 2021-1-14 23:39

160 CM 之4


# 起手

- 查壳 Borland Delphi v3.0
- 直接用idr吧

# 跟下事件

- 没有注册按钮,那么处理代码一般有按键,文本变化,定时器几种,用idr发现,用户名输入框有个按键事件

```
CKM.TForm1.KeyUp
00457E4C      push      ebp
00457E4D      mov         ebp,esp
00457E4F      push      ebx
00457E50      push      esi
00457E51      mov         ebx,eax
00457E53      mov         eax,dword ptr ;TForm1.Edit1:TEdit
00457E59      call      TControl.GetTextLen
00457E5E      mov         esi,eax
00457E60      mov         dword ptr ,esi;取出用户名长度存下来
00457E66      mov         eax,esi
00457E68      cdq
00457E69      xor         eax,edx
00457E6B      sub         eax,edx
00457E6D      mov         dword ptr ,eax;TForm1.?f2F8:Integer
00457E73      pop         esi
00457E74      pop         ebx
00457E75      pop         ebp
00457E76      ret         4
```

- 在看看注册码的文本框,也有一个按键事件,那就看看吧,个人习惯复制出来把确定的内容命名,方便看

```
CKM.TForm1.chkcode

00457C60      push      dword ptr fs:
00457C63      mov         dword ptr fs:,esp
00457C66      mov         esi,dword ptr ;       把上一步的长度拿出来
00457C6C      add         esi,5                                                         ;+5
00457C6F      push      dword ptr ;固定值"黑头Sun Bird"
00457C75      lea         edx,
00457C78      mov         eax,esi
00457C7A      call      IntToStr;变成字符
00457C7F      push      dword ptr ;放入堆栈
00457C82      push      dword ptr ;固定值dseloffc-012-OK
00457C88      lea         edx,
00457C8B      mov         eax,dword ptr ;TForm1.Edit1:TEdit
00457C91      call      TControl.GetText ;再把Name拿出来
00457C96      push      dword ptr
00457C99      lea         eax,;TForm1.?f318:String
00457C9F      mov         edx,4
00457CA4      call      @LStrCatN;吧他们连在一起
....
;下边没目标了,跟不下去了.
```



# 倒着走试试



- 发现在图像框单击事件中有成功字样.

```
00458094      xor         edx,edx
00458096      mov         eax,dword ptr ;TForm1.Panel1:TPanel
0045809C      call      TControl.SetVisible
004580A1      mov         eax,;gvar_0045B820:TForm1
004580A6      add         eax,70
004580A9      mov         edx,458114 ;恭喜恭喜!注册成功
```

- 在00458031发现类变量30C要求0x85,否则跳走失败,两头都有垃圾代码填充

```
00458031      cmp         dword ptr ,85;TForm1.?f30C:dword
0045803B>       jne         004580B3
```

- 图片框DblClick事件中,可见要成为0x85,先要0x3E,同样两头都有垃圾代码

```
00457EF5      cmp         dword ptr ,3E;TForm1.?f30C:dword
00457EFC>       jne         00457F08
00457EFE      mov         dword ptr ,85;TForm1.?f30C:dword
```

- 再找,回到注册框的按键事件上来了,和上边的对上了.
```
00457D1E      lea         edx,
00457D21      mov         eax,dword ptr ;TForm1.Edit2:TEdit
00457D27      call      TControl.GetText ;读取注册码
00457D2C      mov         eax,dword ptr
00457D2F      mov         edx,dword ptr ;和第一步的比较
00457D35      call      @LStrCmp
00457D3A>       jne         00457D46
00457D3C      mov         dword ptr ,3E;赋值 3e
00457D46      mov         eax,dword ptr ;TForm1.?f30C:dword
00457D4C      add         eax,10
```

## 注册机

输入注册码,然后对着图相框快速点3下,或者多点几下也行

```
Function Regcode(userName As String) As String
    Regcode = "oúí·Sun Bird" & Len(userName) + 5 & "dseloffc-012-OK" & userName
End Function
```

# 总结

作者的恶作剧,搞了一堆垃圾代码干扰跟踪.

年迈的老半藏 发表于 2021-1-15 07:29

每次都看每次都看不太懂 哈哈

董志刚 发表于 2021-1-15 07:43

这是什么   走步计数软件吗    看不懂啊

Otoboku 发表于 2021-1-15 08:08

759862134 发表于 2021-1-15 07:29
每次都看每次都看不太懂 哈哈

把cm下下来,自己跟注册码。不懂再去前辈的帖子里头看看他们怎么搞的

qingfeng203 发表于 2021-1-15 18:10

每次都看每次都看不太懂

fksd3 发表于 2021-1-16 07:42


非常实用的教程,谢谢分享
页: [1]
查看完整版本: 160 CM 之4