吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11091|回复: 147
收起左侧

[.NET逆向] 某抽奖软件注册码分析

    [复制链接]
赠柟 发表于 2023-1-29 23:29
1、先简单看了下没有加壳,所有直接丢dnSpy。
1.png
2、搜索提示的字符串。

2

2

3、找到关键跳转
3.png
4、追进去找到算法和关键点
4.png
5、加密函数(md5)
5.png
6、论坛上有提供的验证码,我们抄格式BA-E7-CE-28-84-D4-1673597157, 经过调试,发现a0 就是我们输入的1673597157,str 就是机器码,进行一个g 加密, 然后就可以拼接出a_,对a_进行C# MD5.ComputeHash format加密,从第7位开始取17位,与“-” a0 拼接后  就形成注册码   大致就这样了,a0 没有发现有什么检测,直接写死就可以了,我用的1673597157 (a0为一个时间戳,或许以后有时间检测,各位朋友可以自己写下)  。
8.png
9.png
7、成功注册,重启验证也没问题
7.png 6.png

免费评分

参与人数 29威望 +1 吾爱币 +47 热心值 +27 收起 理由
genon + 1 + 1 热心回复!
stopf578 + 1 + 1 热心回复!
神奇阿裴 + 1 + 1 我很赞同!
x229827570 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liuxiuwei123 + 1 + 1 热心回复!
Xnjikol + 1 + 1 我很赞同!
yuangao + 2 + 1 谢谢@Thanks!
拂你青丝 + 1 + 1 谢谢@Thanks!
chinawolf2000 + 1 + 1 热心回复!
weikun444 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xupengyou + 1 谢谢@Thanks!
jyjjf + 1 + 1 建议修改下帖子,隐藏掉软件名称或者打码
dylcyxy + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
timeni + 1 + 1 谢谢@Thanks!
bjznhxy + 1 + 1 谢谢@Thanks!
努力加载中 + 1 + 1 热心回复!
唐小样儿 + 1 + 1 我很赞同!
sfcsm + 1 + 1 谢谢@Thanks!
Burpcka + 1 我很赞同!
h07799486 + 1 + 1 谢谢@Thanks!
daoye9988 + 1 + 1 谢谢@Thanks!
prada216 + 1 + 1 虽然我不会用 ,但是要支持一下
winos8 + 1 + 1 谢谢@Thanks!
cntjgaowei + 1 + 1 谢谢@Thanks!
zhangxiaoxiao + 1 谢谢@Thanks!
开心熊猫741 + 1 + 1 谢谢@Thanks!
wujiav + 1 谢谢@Thanks!
为之奈何? + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

  • · 1|主题: 45, 订阅: 1

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

imrenliang 发表于 2023-12-14 15:29
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Text;
using System.Security.Cryptography;
namespace HelloWorldApplication
{
   class HelloWorld
   {
    public static string I(string A_0)
    {
        string text = "";
        try
        {
            byte[] bytes = Encoding.UTF8.GetBytes(A_0);
            for (int i = 0; i < bytes.Length; i++)
            {
                text = text + bytes[i].ToString() + "_";
            }
            text = text.TrimEnd('_');
        }
        catch (Exception) when (double.TryParse(text, out double result) && result <= 0.0)
        {
        }
        return text;
    }
 
    public static string G(string A_0)
    {
        return I(A_0.Substring(2, 7)) + I(A_0.Substring(6, 11)) + I(A_0.Substring(8, 7));
    }
 
    public static string J(string A_0)
    {
        using (MD5 md5 = MD5.Create())
        {
            byte[] inputBytes = Encoding.Unicode.GetBytes(A_0.Trim());
            byte[] hashBytes = md5.ComputeHash(inputBytes);
            return BitConverter.ToString(hashBytes);
        }
    }
      static void Main(string[] args)
      {
         /* Write C# code in this online editor and run it. */
        string input = "你的机器码";
        string A_0 = G(input);
        Console.WriteLine(A_0);
        string time = "1701829232";
        string a = "23010010100101001011" + A_0 + time;
        string text = J(a);
        Console.WriteLine(text);
        string cdk = text.Substring(6, 17);
        Console.WriteLine(cdk+"-"+time);
        Console.ReadKey();
      }
   }
}


楼主写的太含糊了,研究了好久~,咋的也对不上,都要放弃了,发现落了一步,机器码g加密后前后都需拼接,也就是楼主第四步里面string a_ 那里,还有我的定义和楼主的不一样,我的是"23010010100101001011",可能是版本不同。j加密好复杂应该没有现成的工具,上边的代码是我根据源代码用gpt转换的等效C#代码,经测试可以在在线编译器上运行,得出的结果正确(跟论坛发码的大哥结果一致),时间戳time那里的数可以网上生成也可以用我的。最后希望对大家有帮助,研究的好累,大家给个赞~。

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
prada216 + 1 + 1 谢谢@Thanks!
201352 + 1 + 1 我很赞同!
壹个金币 + 1 + 1 感谢,成功!最后一行就是注册码!
fooboo + 1 + 1 我很赞同!

查看全部评分

wtujoxk 发表于 2023-1-30 10:39
本帖最后由 wtujoxk 于 2023-1-30 10:40 编辑

写死的1673597157表示的是当前时间,可以自己计算一下,1673597157等于 2023-01-13 16:05:57
1675046298748.jpg

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
yuangao + 1 2099时间戳,就溢出了。^.^
赠柟 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!

查看全部评分

wei22380185 发表于 2023-1-31 13:34
直接发PJ版出来不好吗,

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
15097595720 + 1 + 1 我很赞同!

查看全部评分

 楼主| 赠柟 发表于 2023-2-1 00:08
本帖最后由 赠柟 于 2023-2-2 23:14 编辑
ofo 发表于 2023-1-31 13:21
Strings.Mid(global::c.j(a_), 7, 17) + "-" + A_0
7-17只有10位,注册码不算A_0有12位吧.....

是的,我说错了,应该是第7位开始 ,取17位,加上“-”和 10位的 时间戳 正好是28位。

免费评分

参与人数 1吾爱币 +1 收起 理由
yuangao + 1 时间戳10位

查看全部评分

头像被屏蔽
askmoon510 发表于 2023-1-30 08:49
提示: 作者被禁止或删除 内容自动屏蔽
ofo 发表于 2023-1-31 13:21
Strings.Mid(global::c.j(a_), 7, 17) + "-" + A_0
7-17只有10位,注册码不算A_0有12位吧.....
头像被屏蔽
mengqiu 发表于 2023-1-29 23:46
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 赠柟 发表于 2023-1-29 23:55
mengqiu 发表于 2023-1-29 23:46
总觉得,加密函数得稍微解释下,方便我们小白学习观摩。

第6步已经说的很清楚了, 第一次发帖,有点不到位的 ,请见谅。
skyadmin 发表于 2023-1-30 06:55
牛逼了这教程
ruikai 发表于 2023-1-30 08:28
进来学习了
qiujunkang 发表于 2023-1-30 08:31
哎哟,小白过来学习咯
liurujing657 发表于 2023-1-30 08:43
看不懂,但我大受震撼
hxp.china.sh 发表于 2023-1-30 09:03
向大神学习
lhtzty 发表于 2023-1-30 09:12
谢谢分享!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-1 09:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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