吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5012|回复: 52
收起左侧

[原创] 柿子挑软的捏,160个cm里找到一个能看得懂的逆向(029)

  [复制链接]
howmoney 发表于 2020-7-21 17:46
本人小白,初学汇编和破解,160个cm前20个里爆破了几个,后来试着逆向,因基础太差完全懵B,后来终于找到个看得懂的,感动啊发帖纪念一下。

本小白一上来查找字符串,这个前辈倒是爽快,就留了几个都是关键字符串,没为难小弟。

1

1


来到字符串位置,往前看了几个跳转,发现也是验证后成功就跳到成功,失败就跳到失败,没坑。

分析如下,前面绿色线框着的是个循环,中间不停比较bl和cl的值,jnz,如果值不一样就跳到失败的地方004015C3,如果一直一样,到比较完之后就无条件跳到成功的位置 004015D9,爆破的话把这个JNZ改Nop掉就可以了。但本小白已经不满足于爆破了,试着逆向一下看能不能找出算号规律,关键就是BL和CL 的值,而上面两句MOV:
mov bl,byte ptr ds:[eax]
mov cl,byte ptr ds:[edx]
就是给BL和CL赋值,看来关键就在这段内存中了。猜测一个是存放name的运算结果,一个是存放serial的运算结果。

2

2


再往前翻,发现这两句话,说明这两个值存在栈中
mov eax,dword ptr ss:[ebp-0x1C]
mov edx,dword ptr ss:[ebp-0x10]


再往前,又发现两个循环,读下来思路很清晰。前面把寄存器都清零,然后把ECX赋值1,进入第一个循环。
跟踪内存和堆栈发现,mov eax,[local.7]就是取name字符串的地址放在eax,然后bl读这个地址的数据,也就是name的首个字节,然后bl和cl异或再放回内存,然后cl+1,所以第二个字母和02异或,如此循环直到读出是0说明字符串结束。
第二个是serial的值,和0x0a异或,和0x0b异或....,然后放回内存,这样我们输入的name和serial就被异或成一堆乱七八糟的东西。。。

3

3


下面用C语言写了个算号器:
#include <stdio.h>

void main()
{
    char name[16] = "\0";
    char key[16]="\0";
    int i=0;
    printf("Please input the name:\n");
    scanf("%s",&name);
    while(name!=0)
    {
        key = name ^ (i+1) ^(i+0x0a);
        i++;
    }
    printf("the key is %s\n",key);
    system("pause");
}

思路就是name异或两次得到serial,验证结果也是正确的。另外有个需要注意的点是,前面有个地方调用了GetWindowTextLengthA,然后跟5比较,不大于则直接跳到失败的地方,说明name和serial都需要大于5个字符

4

4

免费评分

参与人数 10威望 +1 吾爱币 +28 热心值 +9 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
mahuar1573 + 1 + 1 我很赞同!
hnwang + 1 + 1 我很赞同!
65857359 + 1 热心回复!
Kaze + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wxqjlo + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
13560097762 + 1 + 1 &amp;amp;#128077;
WoShiXXX + 1 + 1 用心讨论,共获提升!
lene + 1 + 1 给你点赞
solly + 1 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| howmoney 发表于 2020-7-23 10:24
花名丶 发表于 2020-7-21 20:07
想请教一下楼主,学crack整体上有什么思路吗,小白(但不是伸手党)有点迷,不知应该从何学起。
最近还在 ...

我本身有C语言基础,然后最近大概看了两周的视频,是在B站看的“小甲鱼”的教程,先是8086汇编,再看点win32汇编,接着看解密系列
wslingba 发表于 2020-7-22 14:38
好像要给name和key数组添加下标吧
while(name[i]!=0)
    {
        key[i] = name[i] ^ (i+1) ^(i+0x0a);
        i++;
    }
 楼主| howmoney 发表于 2020-7-21 17:49
第一次crack一个作品,有点快感,虽然没什么难点,希望高手们不要觉得我灌水哈哈哈
zdnyp 发表于 2020-7-21 17:57
支持原创分享,加油大神
tyosei 发表于 2020-7-21 17:59
膜拜大佬,大佬加油
smileys 发表于 2020-7-21 18:01
向大佬学习!!
ml3389 发表于 2020-7-21 18:02

支持原创,楼主加油
xiao9798 发表于 2020-7-21 18:03
支持支持
useeseeu 发表于 2020-7-21 18:05
支持一下,加油!
yxqnba 发表于 2020-7-21 18:08
羡慕啊,啥时候我也成大神呢
m-10306 发表于 2020-7-21 18:10
支持原创 加油
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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