吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3720|回复: 13
收起左侧

[原创] CrackMe160 学习笔记 之 064

[复制链接]
zzhwaxy 发表于 2020-5-9 23:15

CrackMe160 学习笔记 之 064

前言

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

思路

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

分析

字符串转大写

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

遍历并计算字符串

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

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

0040DA28   .  FF15 08F14000 call    dword ptr [<&MSVBVM50.#516>]     ; \rtcAnsiValueBstr
0040DA2E   .  66:2D 4000    sub     ax, 40
0040DA32   .  0F80 A1020000 jo      0040DCD9
0040DA38   .  66:69C0 8200  imul    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 [ebp-30]
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 [ebp-30]
0040DB5D   .  F7DE          neg     esi
0040DB5F   .  1BF6          sbb     esi, esi
0040DB9C   . /74 5E         je      short 0040DBFC                   ;  关键跳

注册机代码

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

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

视频演示

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

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

欢迎交流。

免费评分

参与人数 4吾爱币 +10 热心值 +4 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
一楠楠楠楠 + 1 + 1 用心讨论,共获提升!
woyucheng + 1 + 1 谢谢@Thanks!
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zysygdfh 发表于 2020-5-10 00:25
感谢分享
怼你个小娘炮 发表于 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
厉害,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 12:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表