breezer 发表于 2022-12-24 12:37

画出来的 .NET CrackMe

这是上古时期一位大神的 CM,注册码是画出来的,很有创意的一个想法。
只做了简单的加密,没有 VM
放假了,大家一起来画画吧~~

卡卡超人 发表于 2022-12-26 12:12

本帖最后由 卡卡超人 于 2022-12-26 12:24 编辑


分区

(125, 125)
(25, 25)
(25, 225)
(225, 225)
(225, 25)
五个点不连通

(75, 25)
(25, 75)
两个点连通

(175, 225)
(225, 175)
两个点连通

看Reg1和Reg2

SoftCracker 发表于 2022-12-27 09:19

> 这是上古时期一位大神的 CM
意思这是十几年前的CM?



luliucheng 发表于 2022-12-25 13:14

这个程序的代码是加密的,运行时解密到内存,这就使得每次代码在内存中的位置都不一样。同时,这个程序不知用了什么技术,使OD无法检测程序入口,也无法检测主代码解密前程序的堆栈调用情况。这个程序可能需要静态破解。

yang1111502 发表于 2022-12-26 18:58

感谢分享

breezer 发表于 2022-12-27 09:30

SoftCracker 发表于 2022-12-27 09:19
> 这是上古时期一位大神的 CM
意思这是十几年前的CM?

看标题,2011 年的

darksied 发表于 2022-12-26 22:55


Private Sub Button1_Click(sender As Object, e As EventArgs)
      Dim num As Integer = 0
      Do
                IL_02:
                Dim arg_09_0 As Integer = 15
                While True
                        Dim expr_0A As Integer = arg_09_0 Xor 814828136
                        Dim num2 As UInteger = CUInt(expr_0A)
                        ' The following expression was wrapped in a checked-statement
                        Dim num3 As Integer
                        num3 += 1
                        arg_09_0 = 11
                        Dim arg_1E1_0 As Object = 1
                        Continue While
                        Select Case expr_0A Mod 17
                              Case 0
                                        GoTo IL_02
                              Case 1
                                        Dim num3 As Integer
                                        Me.b(num, num3) = False
                                        Dim num4 As UInteger = num2
                                        Dim array As UInteger() = New UInteger(5 - 1) {}
                                        array(0) = 411U
                                        array(1) = 4294967191U + array(0)
                                        array(2) = 832U - array(1) - array(0)
                                        array(3) = 310U + array(2) + array(1) - array(0)
                                        array(4) = 4294966671U + array(3) - array(2) + array(1) + array(0)
                                        Dim num5 As UInteger = num4 / array(4)
                                        arg_09_0 = CInt((num5 - 2743528U))
                                        Dim arg_486_0 As Object = 1
                                        Continue While
                              Case 2
                                        Dim num3 As Integer
                                        Me.b(num, num3) = True
                                        arg_09_0 = 10
                                        Dim arg_640_0 As Object = 1
                                        Continue While
                              Case 3
                                        Dim array As UInteger()
                                        Dim num6 As UInteger
                                        ' The following expression was wrapped in a checked-statement
                                        num += 1
                                        num6 = num2
                                        array = New UInteger(5 - 1) {}
                                        array(0) = 255U
                                        array(1) = 14U + array(0)
                                        array(2) = 4294966877U + array(1) + array(0)
                                        array(3) = 632U + array(2) - array(1) - array(0)
                                        array(4) = 301U + array(3) - array(2) - array(1) + array(0)
                                        Dim num7 As UInteger = num6 / array(4)
                                        arg_09_0 = CInt((num7 - 2062843U))
                                        Dim arg_335_0 As Object = 1
                                        Continue While
                              Case 4
                                        Interaction.MsgBox(ChrW(27880) & ChrW(20876) & ChrW(25104) & ChrW(21151), MsgBoxStyle.Information, ChrW(24685) & ChrW(21916))
                                        Dim num8 As UInteger = num2
                                        Dim array As UInteger() = New UInteger(4 - 1) {}
                                        array(0) = 382U
                                        array(1) = 4294967253U + array(0)
                                        array(2) = 103U - array(1) + array(0)
                                        array(3) = 210U - array(2) - array(1) + array(0)
                                        Dim num9 As UInteger = num8 / array(3)
                                        arg_09_0 = CInt((num9 - 7615216U))
                                        Dim arg_55B_0 As Object = 1
                                        Continue While
                              Case 5
                                        Interaction.MsgBox(ChrW(27880) & ChrW(20876) & ChrW(22833) & ChrW(36133), MsgBoxStyle.Information, ChrW(32487) & ChrW(32493) & ChrW(21162) & ChrW(21147))
                                        arg_09_0 = 2
                                        Dim arg_D6_0 As Object = 1
                                        Continue While
                              Case 6
                                        Return
                              Case 7
                                        Dim num3 As Integer
                                        Dim pixel As Color = Me.bit.GetPixel(num, num3)
                                        arg_09_0 = 12
                                        Dim arg_1B2_0 As Object = 1
                                        Continue While
                              Case 8
                              Case 9
                                        Dim num3 As Integer
                                        arg_09_0 = CInt(((If((num3 <= 250), 494443U, 494423U)) Xor num2 / 1648U))
                                        Dim arg_124_0 As Object = 1
                                        Continue While
                              Case 10
                                        Dim pixel As Color
                                        arg_09_0 = CInt(((If((Operators.CompareString(pixel.Name, "ff000000", False) <> 0), 510587U, 510588U)) Xor num2 / 1596U))
                                        Dim arg_23C_0 As Object = 1
                                        Continue While
                              Case 11
                                        arg_09_0 = CInt(((If((num > 250), 424395U, 424394U)) Xor num2 / 1920U))
                                        Dim arg_383_0 As Object = 1
                                        Continue While
                              Case 12
                                        arg_09_0 = CInt(((If((Me.Reg1() And Me.Reg2()), 467239U, 467238U)) Xor num2 / 1744U))
                                        Dim arg_179_0 As Object = 1
                                        Continue While
                              Case 13
                                        Dim num3 As Integer = 0
                                        arg_09_0 = 9
                                        Dim arg_99_0 As Object = 1
                                        Continue While
                              Case 14
                                        Dim num10 As UInteger = num2 / 1900U
                                        arg_09_0 = CInt((num10 - 428854U))
                                        Dim arg_599_0 As Object = 1
                                        Continue While
                              Case 15
                                        Dim num11 As UInteger = num2 / 1884U
                                        arg_09_0 = CInt((num11 - 432489U))
                                        Dim arg_5D7_0 As Object = 1
                                        Continue While
                              Case 16
                                        ProjectData.EndApp()
                                        arg_09_0 = 8
                                        Dim arg_607_0 As Object = 1
                                        Continue While
                        End Select
                        Exit While
                End While
      Loop While 1 Is Nothing
End Sub


没看懂这代码在干啥

dou520dou 发表于 2022-12-25 07:52

还没使用,但感觉很实用的样子,谢谢楼主无私分享

z123zhang 发表于 2022-12-25 08:15

大佬就是大佬

pojie6 发表于 2022-12-25 08:17

rinima 发表于 2022-12-25 09:39

感谢楼主分享

落红护花 发表于 2022-12-25 14:42

luliucheng 发表于 2022-12-25 13:14
这个程序的代码是加密的,运行时解密到内存,这就使得每次代码在内存中的位置都不一样。同时,这个程序不知 ...

分析很明确,普通的dump工具也dump不出来,dnspy报错

云在天 发表于 2022-12-25 15:33


挺有意思的

breezer 发表于 2022-12-25 16:08

云在天 发表于 2022-12-25 15:33
挺有意思的

期待总版主画作 {:301_998:}

lzy1983 发表于 2022-12-25 17:51

厉害了,高手
页: [1] 2 3
查看完整版本: 画出来的 .NET CrackMe