andyfeifei 发表于 2016-3-5 11:24:28

pdferaser分析,注册机源码及成品

本帖最后由 andyfeifei 于 2016-3-6 11:18 编辑

首先感谢 gagmeng 老表。他弄的软件,其实我自己也没有找到相关的好软件。看到他弄了注册机,我也拿这个软件玩玩,就随便拿个软件开刀吧。老表别怪我哈


软件介绍:
PDF Eraser is a Windows application that deletes and erases text, images, logos and all unnecessary objects from PDF files. Users can use the program to remove some original content from a PDF file, and then add their text and images. Besides that, PDF Eraser has a built-in PDF Page Cutter, which allows users to delete unnecessary PDF pages. Considering lots of scanned PDF documents, PDF Eraser also added the PDF Rotating function rotates PDF pages properly with 2 clicks.

WHAT CAN PDF ERASER DO


[*]If you got a PDF document contains unwanted text and images, you can use PDF Eraser to erase them and save to a new PDF file.
[*]Erasing is not the only thing PDF Eraser can do. You can use the program to add your own text and pictures into the PDF as well.
[*]PDF Eraser can rotate the PDF pages also. It will help you to rotate the PDF pages to the correct orientation.
[*]You might find some PDF pages are unnecessary, so you can use the built-in PDF Page Cutter to delete unwanted pages.
软件主页:
http://www.pdferaser.net/


我只会一点点VB,大牛见笑了
打开软件,找到代码


            Dim text As String = Me.txtReg.Text
            Dim flag As Boolean = False
            Dim flag1 As Boolean = False
            Dim flag2 As Boolean = False
            Dim flag3 As Boolean = False
            Dim num As Integer = 1
            While num < Me.txtReg.Text.Length                  ‘’判断注册码开始,,以用户输入字符的长度为次数
                If (Me.txtReg.Text.Substring(num, 1) = "W") Then         //判断里面有没有W
                  flag = True
                End If
                If (Me.txtReg.Text.Substring(num, 1) = "A") Then                              判断注册码里有没有A
                  flag1 = True
                End If
                If (Me.txtReg.Text.Substring(num, 1) = "N") Then                           //判断注册码里有没有N
                  flag2 = True
                End If
                If (Me.txtReg.Text.Substring(num, 1) = "G") Then                            //判断注册码里有没有G
                  flag3 = True
                End If
                num = num + 1
            End While
            If (If(String.Compare(text, "M9NTA1WQ64LGO60") = 0 OrElse String.Compare(text, "LAGSW1VQ54K2N6Z") = 0 OrElse String.Compare(text, "IWFIN9A53841J7G") = 0 OrElse String.Compare(text, "05930UNGGB0A1WQ") = 0 OrElse String.Compare(text, "IW9F678L1AN6LZG") = 0, True, text.Length <> 15)) Then            //这里判断注册码是否是这些M9NTA1WQ64LGO60、LAGSW1VQ54K2N6Z、IWFIN9A53841J7G、05930UNGGB0A1WQ、IW9F678L1AN6LZG并且要等15位,如果等于这些或者是不等于15位就出错的提示!!!!!!!!!
                MessageBox.Show("Invaild code.", "Failed", MessageBoxButtons.OK)
                MyBase.Close()
            ElseIf (If(Not flag OrElse Not flag1 OrElse Not flag2, True, Not flag3)) Then            //判断没有WANG这几个字母的为错的注册码
                MessageBox.Show("Invaild code.", "Failed", MessageBoxButtons.OK)
                MyBase.Close()
            Else                                               //否则注册成功了!!!!!!!!!!!!
                MessageBox.Show("Register successfully, please restart the program", "Registered", MessageBoxButtons.OK)
                Dim fileStream As System.IO.FileStream = New System.IO.FileStream(String.Concat(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "\pecodec.dll"), FileMode.Create)   //建立文件
                Dim streamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(fileStream)
                streamWriter.Write("20130303")                                           // 写 入这个日期
                streamWriter.Flush()
                streamWriter.Close()
                fileStream.Close()
                MyBase.Close()
                IOs.zhuce = True
            End If


下面注册机是不是很简单了?????????????


下面为VB注册码的源代码,,,,,,,,写得不好不要骂我。因为我真的不会!!!!!!!!!!!!



Dim 必要字符, 目标, 随机字符, 插入 As String, n, m, i, j, U, K, p As Integer    '定义,这个不用说了吧
必要字符 = "WGNA"'初始化要插入的字符
随机字符 = "9871234560NOPQRSTUVWXYZABCDEFGHIJKLM"    '生成注册码字符
Randomize'初始随机数,WANG 要随机插入
n = Int(4 * Rnd)'随机计算
For i = 1 To 4    '以随机N开头,进行对必要字符取值
If n > 4 Then n = 1
If n = 0 Then n = 1
目标 = 目标 & Mid(必要字符, n, 1)
n = n + 1
20:
Randomize      '初始随机数
m = Int(14 * Rnd) + 1      '确认WANG要插入的位置
If InStr(插入, m) > 0 Then GoTo 20      '如果发现有之前产生的随机数,回到标识20:处
   If 插入 = "" Then
   插入 = m                              '接收插入字符的位置
   Else
   插入 = 插入 & "," & m                  '以,隔开接收字符位置
   End If
Next
插入1 = Split(插入, ",")                        '将插入的字符位置转换成数组,方便后面对位置的取出
U = 1                                          '插入字符后判断的个数
码 = ""                                          '注册码初始化
回来:                                              '标识
For j = 1 To 15                                    '计算注册码开始
Randomize
n = Int(35 * Rnd) + 1                            ' 随机抽取注册码字符
K = 0                                          '初始化插入位置的标识位
For p = LBound(插入1) To UBound(插入1)            '查找当前J是不是要插入WANG的位置
If j = Val(插入1(p)) Then                        '找到了插入的位置
K = 1                                          '改变插入位置的标识
Exit For                                          '跳出循环
End If
Next
If K = 1 Then                                    '判断插入位置标志,确认是可以的,下面进行插入否则插入其它随机码
码 = 码 & Mid(目标, U, 1)
'MsgBox Mid(目标, U, 1)
U = U + 1
Else
码 = 码 & Mid(随机字符, n, 1)
End If
Next
If 码 = "M9NTA1WQ64LGO60" Or 码 = "LAGSW1VQ54K2N6Z" Or 码 = "IWFIN9A53841J7G" Or 码 = "05930UNGGB0A1WQ" Or 码 = "IW9F678L1AN6LZG" Then GoTo 回来:'实在不走运碰到这几个,滚到回来的位置
Text1.Text = 码


附上成品
表哥们!!!!!!加分呀



编程各有各的思维,感谢DaShanRen兄建议。代码从理论上来讲DaShanRen兄代码要比我的运行速度要快点
从最后的循环来讲,我个人的插入的时候15个字符每一次都要判断一次插入的位置,而DaShanRen,兄的是直接替换位置的地方。
其实程序还有一个地方就是在接收插入字符的位置,如果按现在写程序的方式来看,第一个随机出现的是12,然后再次随机出现的是2的时候就是判断为重复
有兴趣的可以再修改一下,我就不再做修改了。
其实发布时候过后就想到这些问题了,毕竟这里只是讲破解讲分析算法,所以没有这么去较真的。


zz100179 发表于 2016-3-5 12:11:39

非常好,感谢分享

左岸麦田 发表于 2016-3-5 13:07:39

学习了,一下子出来好多。

zxxiaopi 发表于 2016-3-5 14:10:22

分析过程,学习了,感谢

ZMLoveLH 发表于 2016-3-5 14:32:39

楼主牛人啊,看了楼主的帖子,学到了好多,多谢了

某某 发表于 2016-3-5 14:46:03

#在这里快速回复#感谢发布原创作品!

0xcb 发表于 2016-3-5 15:26:54

这代码写的太6了,学习分析下算法,

didi科学家 发表于 2016-3-5 18:15:40

支持原创

qinccckencn 发表于 2016-3-5 18:46:38

膜拜会分析算法的大牛,支持了!!

DaShanRen 发表于 2016-3-5 23:13:04

本帖最后由 DaShanRen 于 2016-3-5 23:23 编辑

说实话,这代码写的还真不咋地,从第一行开始就规矩不清还卖弄。
我略为整理了一下,如下:
    Dim 必要字符, 目标, 随机字符, 插入 As String, n As Integer, i As Integer

    必要字符 = "WGNA"
    随机字符 = "9871234560NOPQRSTUVWXYZABCDEFGHIJKLM"
    码1 = "M9NTA1WQ64LGO60"
    码2 = "LAGSW1VQ54K2N6Z"
    码3 = "IWFIN9A53841J7G"
    码4 = "05930UNGGB0A1WQ"
    码5 = "IW9F678L1AN6LZG"
   
    Randomize
    n = Int(3 * Rnd + 1)
    For i = 1 To 4
      目标 = 目标 & Mid(必要字符, (n Mod 4) + 1, 1)
      n = n + 1
    Next
   
    Randomize
    m = Int(14 * Rnd + 1)
    插入 = m
    For i = 1 To 3
      Do
            m = Int(14 * Rnd + 1)
      Loop While InStr(插入, m) <> 0
      
      插入 = 插入 & "," & m
    Next
   
    插入1 = Split(插入, ",")
   
    Do
      码 = ""
      Randomize
      For i = 1 To 15
            n = Int(35 * Rnd + 1)
            码 = 码 & Mid(随机字符, n, 1)
      Next
      
      For i = 0 To 3
            n = 插入1(i)
            Mid(码, n, 1) = Mid(目标, i + 1, 1)
      Next
    Loop While (码 = 码1) Or (码 = 码2) Or (码 = 码3) Or (码 = 码4) Or (码 = 码5)
    Text1.Text = 码

学C的人认为VB不够高端,学易的人认为VB的英文难记,就是没考虑学一行精一行。
页: [1] 2
查看完整版本: pdferaser分析,注册机源码及成品