飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6796|回复: 16

[原创] pdferaser分析,注册机源码及成品

  [复制链接]
  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1495 天

    [LV.10]以坛为家III

    发表于 2016-3-5 11:24:28 | 显示全部楼层 |阅读模式
    本帖最后由 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的时候就是判断为重复
    有兴趣的可以再修改一下,我就不再做修改了。
    其实发布时候过后就想到这些问题了,毕竟这里只是讲破解讲分析算法,所以没有这么去较真的。


    图片1.png

    pdferaser注册机.rar

    7.89 KB, 下载次数: 25, 下载积分: 飘云币 -2 枚

    评分

    参与人数 9威望 +40 飘云币 +116 收起 理由
    Dxer + 8 + 8 感谢发布原创作品!
    Rooking + 8 + 40 PYG有你更精彩!
    夜的静night + 4 + 4 很给力!
    tree_fly + 20 用C写代码吧
    左岸麦田 + 4 很给力!
    yosen2001 + 4 + 4 表哥,给给力
    0xcb + 8 + 8 PYG有你更精彩!中文变量名,太6了
    飘云阁Bug测试 + 4 感谢发布原创作品!
    GeekCat + 32 表哥这个厉害,完全看不懂啊~~

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-10-19 08:50
  • 签到天数: 91 天

    [LV.6]常住居民II

    发表于 2016-3-5 12:11:39 | 显示全部楼层
    非常好,感谢分享
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-7-31 08:47
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2016-3-5 13:07:39 | 显示全部楼层
    学习了,一下子出来好多。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 1760 天

    [LV.Master]伴坛终老

    发表于 2016-3-5 14:10:22 | 显示全部楼层
    分析过程,学习了,感谢
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 2754 天

    [LV.Master]伴坛终老

    发表于 2016-3-5 14:32:39 | 显示全部楼层
    楼主牛人啊,看了楼主的帖子,学到了好多,多谢了
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2016-8-4 20:22
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2016-3-5 14:46:03 | 显示全部楼层
    #在这里快速回复#感谢发布原创作品!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2021-9-29 15:05
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2016-3-5 15:26:54 | 显示全部楼层
    这代码写的太6了,学习分析下算法,
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 1993 天

    [LV.Master]伴坛终老

    发表于 2016-3-5 18:46:38 | 显示全部楼层
    膜拜会分析算法的大牛,支持了!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-19 11:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-3-5 23:13:04 | 显示全部楼层
    本帖最后由 DaShanRen 于 2016-3-5 23:23 编辑

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

    2.     必要字符 = "WGNA"
    3.     随机字符 = "9871234560NOPQRSTUVWXYZABCDEFGHIJKLM"
    4.     码1 = "M9NTA1WQ64LGO60"
    5.     码2 = "LAGSW1VQ54K2N6Z"
    6.     码3 = "IWFIN9A53841J7G"
    7.     码4 = "05930UNGGB0A1WQ"
    8.     码5 = "IW9F678L1AN6LZG"
    9.    
    10.     Randomize
    11.     n = Int(3 * Rnd + 1)
    12.     For i = 1 To 4
    13.         目标 = 目标 & Mid(必要字符, (n Mod 4) + 1, 1)
    14.         n = n + 1
    15.     Next
    16.    
    17.     Randomize
    18.     m = Int(14 * Rnd + 1)
    19.     插入 = m
    20.     For i = 1 To 3
    21.         Do
    22.             m = Int(14 * Rnd + 1)
    23.         Loop While InStr(插入, m) <> 0
    24.         
    25.         插入 = 插入 & "," & m
    26.     Next
    27.    
    28.     插入1 = Split(插入, ",")
    29.    
    30.     Do
    31.         码 = ""
    32.         Randomize
    33.         For i = 1 To 15
    34.             n = Int(35 * Rnd + 1)
    35.             码 = 码 & Mid(随机字符, n, 1)
    36.         Next
    37.         
    38.         For i = 0 To 3
    39.             n = 插入1(i)
    40.             Mid(码, n, 1) = Mid(目标, i + 1, 1)
    41.         Next
    42.     Loop While (码 = 码1) Or (码 = 码2) Or (码 = 码3) Or (码 = 码4) Or (码 = 码5)
    43.     Text1.Text = 码
    复制代码


    学C的人认为VB不够高端,学易的人认为VB的英文难记,就是没考虑学一行精一行。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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