逆向学习crackme160题-016-fty_crkme3 的 weite up

简介: 逆向学习crackme160题-016-fty_crkme3 的 weite up

016-fty_crkme3 的 weite up

1. 程序的执行

2. 查壳

有壳脱壳

3. 分析

将程序拖入OD的时候,右键智能搜索字符串,滑到最下面,然后找到关键的提示字符串,如下图:

双击进入跟踪,可以看到一根跳转的红线,有很多的跳转都来到了这里,如下图:

所以我们可以学一个新的技能就是右键地址处,加标签,加完标签后地址就会变红色字体如图:

所以我们就可以看到这些跳转都会显示<错误处>,而不是一个地址,便于分析,这是一个小技巧,如下图:

然后我们往上滑就可以看到函数的入口点,我们下断点然后运行到这里开始正式分析,如下图:

解释:上图划线分成了三部分。第一部分是堆栈平衡,第二部分主要是判断输入的是否为空,第三部分主要就是确用户数输入的只能是0-9的数字或者是字符“-”。

继续往下单步执行分析如下图:

解释:上图划线也分成了三部分。第一部分:判定输入字符串长度必须在0x9~0xB之间,然后后面的算法计算大概意思差不多,所以我们后面只用字符串长度为0x9时举例。第二部分:当字符串长度为0x9时,第三个字符和第七个字符必须为“-”,否则直接跳转到错误处。第三部分,后面很大一块就是将字符串中的的数字提取出来拼接成一串纯数字。

继续往下分析如下图:

解释:这就是加密算法的主要部分了,主要的流程就是把输入正确长度的字符串进行纯数字的提取,将这些纯数字字符串以十六进制保存在esi中,然后依次把这些纯数字取单个进行七次方的运算,每次得到的运算结果都要累加起来,最后储存在edi中。

最后的关键跳如下图,就是对比esi和edi中的结果,如果相同则正确:

4. 注册机的编写

//me 写的小白程序

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

void generatekey();
main()
{
  generatekey();
  system("pause");
  return 0;
}
void generatekey()
{
  char arr[10]={ '0','1','2','3','4','5','6','7','8','9' };
  char key[10] = { 0 };
  char serialkey[10] = { 0 };
  int serial = 0;
  int edi = 0;
  int length = 10;
  int ar = 0;
  for (int i = 0; i < 10; i++)
  {
    for (int j = 0; j < 10; j++)
    {
      for (int n = 0; n < length; n++)
      {
        for (int m = 0; m < length; m++)
        {
          for (int a = 0; a < length; a++)
          {
            for (int b = 0; b < length; b++)
            {
              for (int c = 0; c < length; c++)
              {
                key[0] = arr[i];
                key[1] = arr[j];
                key[2] = arr[n];
                key[3] = arr[m];
                key[4] = arr[a];
                key[5] = arr[b];
                key[6] = arr[c];
                for (int d = 0; d < 7; d++)
                {
                  char str = { 0 };
                  str = key[d] - '0';
                  //ar = pow(a, 7);//pow()是双精度的次方运算,在这里不可用
                  edi = edi + (str * str * str * str * str * str * str);//计算次方的函数
                }
                serial = atoi(key);//将字符串转化为十进制数
                if (serial == edi)
                {
                  serialkey[0] = arr[i];
                  serialkey[1] = arr[j];
                  serialkey[2] = '-';
                  serialkey[3] = arr[n];
                  serialkey[4] = arr[m];
                  serialkey[5] = arr[a];
                  serialkey[6] = '-';
                  serialkey[7] = arr[b];
                  serialkey[8] = arr[c];
                  printf("serialkey: %s\n", serialkey);
                }
          
              }
            }
          }
        }
      }
    }
  }
  return 0;
}

//极安御信写的

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>

int main()
{
    for (int i = 1000000; i < 9999999; i++)
    {
        int sum = 0;
        char tmp[8] = { 0 };
        _itoa(i, tmp, 10);

        for (int j = 0; j < 7; j++) sum += pow(tmp[j] - '0', 7);
        if (i == sum)std::cout << i << std::endl;
    }
}


相关文章
|
12月前
|
网络协议 Java 数据库连接
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
2023第二届陇剑杯网络安全大赛 预选赛复盘学到的一些经验
229 6
|
存储 缓存 固态存储
时序数据库 InfluxDB(四)
时序数据库 InfluxDB(四)
303 1
|
12月前
|
算法 安全 Shell
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre
376 1
|
12月前
|
存储 监控 API
史上最全最完整,最详细,软件保护技术-程序脱壳篇-逆向工程学习记录(二)
本文详细介绍了软件保护技术中的程序脱壳过程,包括IAT(导入地址表)的重建、OD(OllyDbg)跟踪输入表、HOOK-API技术以及FSG、UPX和WinUpacx等常见压缩壳的加脱壳方法。文章通过具体实例和详细步骤,帮助读者理解并掌握逆向工程的基本技巧。[原文链接](https://developer.aliyun.com/article/1618653)
295 0
|
12月前
|
安全 API 数据安全/隐私保护
史上最全最完整,最详细,软件保护技术-程序脱壳篇-逆向工程学习记录(一)
欢迎访问我的原站!本文详细介绍了程序脱壳技术,包括壳的定义、作用、执行过程、OEP(原始入口点)的概念及查找方法。文章通过多个实例,逐步演示了如何使用OD(OllyDbg)等工具进行脱壳操作,涵盖了压缩壳、加密壳等多种类型的壳。内容详尽,适合逆向工程初学者深入学习。[点击查看原文](https://www.oisec.cn/index.php/archives/520/)
973 0
|
8月前
|
机器学习/深度学习 人工智能 API
aliyun评测零门槛、即刻拥有 DeepSeek-R1 满血版
DeepSeek-R1满血版是一款零门槛、高性能的深度学习工具,旨在帮助开发者和研究人员高效实现创新。评测显示,其操作界面设计友好,左右分屏布局使理论与实践紧密结合,极大提升了操作连贯性和效率。用户可轻松获取API-KEY,并通过Chatbox配置进行深度学习对话,整个过程简单流畅。该工具在部署集成性、易用性及高性能计算支持方面表现出色,尤其适合本地软件部署,满足用户的实际需求。阿里云提供的详尽文档和引导也使得初次使用者能快速上手,体验极佳。
209 1
|
12月前
|
安全 关系型数据库 MySQL
bah-host碰撞-pspy+sheallinabox
bah-host碰撞-pspy+sheallinabox
92 2
|
12月前
|
关系型数据库 MySQL Linux
oliva-bruteforce-luks
oliva-bruteforce-luks
84 2
|
12月前
|
算法 数据安全/隐私保护
逆向学习crackme160题-008-Afkayas.1 的 write up
逆向学习crackme160题-008-Afkayas.1 的 write up
80 1
|
12月前
|
网络安全 数据安全/隐私保护
tron-passwd写入提权
tron-passwd写入提权
73 1