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的时候就是判断为重复
有兴趣的可以再修改一下,我就不再做修改了。
其实发布时候过后就想到这些问题了,毕竟这里只是讲破解讲分析算法,所以没有这么去较真的。
非常好,感谢分享 学习了,一下子出来好多。 分析过程,学习了,感谢 楼主牛人啊,看了楼主的帖子,学到了好多,多谢了 #在这里快速回复#感谢发布原创作品! 这代码写的太6了,学习分析下算法, 支持原创 膜拜会分析算法的大牛,支持了!! 本帖最后由 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