zzhwaxy 发表于 2020-5-9 23:15

CrackMe160 学习笔记 之 064

## CrackMe160 学习笔记 之 064

## 前言

这是个VB程序。界面还做的挺好看的。

## 思路

对输入字符串转大写计算生成新的字符串并比较验证。

## 分析

### 字符串转大写

```
0040D96F   .FF15 3CF14000 call    dword ptr [<&MSVBVM50.#528>]   ;MSVBVM50.rtcUpperCaseVar
```

### 遍历并计算字符串

```
0040D9BC   > /66:3BB5 48FFF>cmp   si, word ptr
0040D9C3   . |0F8F 3A010000 jg      0040DB03                         ;循环出口

0040D9D5   .52            push    edx                              ; /Length8
0040D9D6   .8D8D 7CFFFFFF lea   ecx, dword ptr           ; |
0040D9DC   .50            push    eax                              ; |Start
0040D9DD   .8D55 AC       lea   edx, dword ptr           ; |
0040D9E0   .51            push    ecx                              ; |dString8
0040D9E1   .52            push    edx                              ; |RetBUFFER
0040D9E2   .C745 C4 01000>mov   dword ptr , 1            ; |
0040D9E9   .C745 BC 02000>mov   dword ptr , 2            ; |
0040D9F0   .C785 7CFFFFFF>mov   dword ptr , 4008         ; |
0040D9FA   .FF15 30F14000 call    dword ptr [<&MSVBVM50.#632>]   ; \rtcMidCharVar
0040DA00   .8D45 AC       lea   eax, dword ptr           ;取当前字符

0040DA28   .FF15 08F14000 call    dword ptr [<&MSVBVM50.#516>]   ; \rtcAnsiValueBstr
0040DA2E   .66:2D 4000    sub   ax, 40
0040DA32   .0F80 A1020000 jo      0040DCD9
0040DA38   .66:69C0 8200imul    ax, ax, 82
0040DA3D   .0F80 96020000 jo      0040DCD9
0040DA43   .66:03C7       add   ax, di
0040DA46   .0F80 8D020000 jo      0040DCD9
0040DA4C   .66:05 5000    add   ax, 50
0040DA50   .0F80 83020000 jo      0040DCD9
0040DA56   .66:05 5000    add   ax, 50
0040DA5A   .0F80 79020000 jo      0040DCD9
0040DA60   .66:05 5000    add   ax, 50
0040DA64   .0F80 6F020000 jo      0040DCD9
0040DA6A   .66:05 5000    add   ax, 50
0040DA6E   .0F80 65020000 jo      0040DCD9
0040DA74   .66:05 5000    add   ax, 50
0040DA78   .0F80 5B020000 jo      0040DCD9
0040DA7E   .66:05 5000    add   ax, 50
0040DA82   .0F80 51020000 jo      0040DCD9
0040DA88   .66:05 5000    add   ax, 50
0040DA8C   .0F80 47020000 jo      0040DCD9
0040DA92   .66:05 5000    add   ax, 50
0040DA96   .0F80 3D020000 jo      0040DCD9
0040DA9C   .66:05 5000    add   ax, 50
0040DAA0   .0F80 33020000 jo      0040DCD9
0040DAA6   .66:05 5000    add   ax, 50
0040DAAA   .0F80 29020000 jo      0040DCD9
0040DAB0   .66:05 5000    add   ax, 50
0040DAB4   .0F80 1F020000 jo      0040DCD9
0040DABA   .66:05 5000    add   ax, 50
0040DABE   .0F80 15020000 jo      0040DCD9
0040DAC4   .66:05 5000    add   ax, 50
0040DAC8   .0F80 0B020000 jo      0040DCD9
0040DACE   .66:05 5000    add   ax, 50
0040DAD2   .0F80 01020000 jo      0040DCD9
0040DAD8   .66:05 5000    add   ax, 50
0040DADC   .0F80 F7010000 jo      0040DCD9
0040DAE2   .66:05 5000    add   ax, 50
0040DAE6   .0F80 ED010000 jo      0040DCD9
0040DAEC   .8BF8          mov   edi, eax                         ;edi 保存计算结果
0040DAEE   .B8 01000000   mov   eax, 1
0040DAF3   .66:03C6       add   ax, si
0040DAF6   .0F80 DD010000 jo      0040DCD9
0040DAFC   .8BF0          mov   esi, eax                         ;esi 保存循环次数
0040DAFE   .^ E9 B9FEFFFF   jmp   0040D9BC
```

### 验证

```
0040DB44   .FF15 E8F04000 call    dword ptr [<&MSVBVM50.__vbaStrI2>;MSVBVM50.__vbaStrI2
0040DB4A   .8BD0          mov   edx, eax
0040DB4C   .8D4D D0       lea   ecx, dword ptr
0040DB4F   .FFD3          call    ebx
0040DB51   .50            push    eax
0040DB52   .FF15 40F14000 call    dword ptr [<&MSVBVM50.__vbaStrCm>;MSVBVM50.__vbaStrCmp
0040DB58   .8BF0          mov   esi, eax
0040DB5A   .8D45 D0       lea   eax, dword ptr
0040DB5D   .F7DE          neg   esi
0040DB5F   .1BF6          sbb   esi, esi
0040DB9C   . /74 5E         je      short 0040DBFC                   ;关键跳
```

## 注册机代码

```c
#include<stdio.h>
int main(int argc,char** argv)
{
if(argc!=2) return 0;
int len=strlen(argv);
short sum=0;
for(int i=0;i<len;i++)
      sum+=(argv&0xDF-0x40)*0x82+0x500;
printf("key:%d",sum);
return 0;
}
```

有一点忘记补充的是,我定义变量为short类型是因为超过会溢出。
## 视频演示

链接: https://pan.baidu.com/s/1ggCCx6goHvImDaylYlfP4w密码: cln3

有什么批评和建议欢迎提出。

欢迎交流。

zysygdfh 发表于 2020-5-10 00:25

感谢分享{:1_918:}

怼你个小娘炮 发表于 2020-5-10 00:49

感谢分享

wapjcxz 发表于 2020-5-10 06:05

感谢分享,仔细学习中

badou0332 发表于 2020-5-10 10:31

懵逼的走进来 随便看看

萌新上学路 发表于 2020-5-10 11:57

感谢分享慢慢感触一下

Angel泠鸢 发表于 2020-5-10 13:37

感谢分享

DDDangerous 发表于 2020-5-10 17:55


感谢楼主分享,保留备

sdkyzgh 发表于 2020-5-11 05:23

xiaohong 发表于 2020-5-17 10:52

厉害,学习了
页: [1] 2
查看完整版本: CrackMe160 学习笔记 之 064