0

是否可以使用 vb.net 制作类似于补丁程序和破解程序的应用程序?我不想让人们看到我复制并替换旧的秘密 .dll,所以它应该是一个 .exe 应用程序

对不起我的英语不好:) 谢谢

4

2 回答 2

0

如何将二进制字节数组转换为字符串并返回。该示例特别适用于 JPG 图像,但您应该能够通过一些工作将其转换为 DLL/文件。

Private Function BitmapToString(ByVal BM As Image) As String
    Dim MS As New IO.MemoryStream
    System.Windows.Forms.Application.DoEvents()
    BM.Save(MS, System.Drawing.Imaging.ImageFormat.Jpeg)
    System.Windows.Forms.Application.DoEvents()

    Dim ba As Byte() = MS.ToArray
    System.Windows.Forms.Application.DoEvents()
    'ba = CompressBytes(ba)

    Dim sb As New System.Text.StringBuilder("")
    System.Windows.Forms.Application.DoEvents()
    sb.Append(ba(0))
    System.Windows.Forms.Application.DoEvents()
    For i As Integer = 1 To ba.Length - 1
        Select Case ba(i).ToString.Length
            Case 1
                sb.Append("  " & ba(i))
            Case 2
                sb.Append(" " & ba(i))
            Case 3
                sb.Append(ba(i))
            Case Else
                Stop
        End Select
        System.Windows.Forms.Application.DoEvents()
    Next
    Return sb.ToString
End Function
Private Function StringToBitmap(ByVal sString As String) As Image
    Dim aList As New ArrayList

    If sString.Length Mod 3 = 0 Then
        For i As Integer = 0 To sString.Length - 1 Step 3
            aList.Add(CByte(sString.Substring(i, 3)))
        Next
        Dim ba As Byte()
        ba = aList.ToArray(GetType(Byte))
        'ba = DecompressBytes(ba)
        Dim MS As New IO.MemoryStream(ba)

        Return New Bitmap(MS)
    Else
        Return Nothing
    End If
End Function

注意:CompressBytes() 和 DecompressBytes() 是我自己的函数,你不需要它们来工作。

于 2013-10-17T14:03:14.347 回答
0

如果我对您的理解正确,您需要一个包含 1 个或多个 DLL 的 EXE,这些 DLL 不被 EXE 使用,但您可以使用这些信息将实际的 DLL 写入硬盘驱动器。

我以前这样做过,不知道其他人是否有更好的方法,但你可以试试这个:

创建一个将 DLL 读入字节数组的新程序,然后通过创建一个将每个字节转换为字符串表示的函数来将此字节数组转换为字符串。(可能是其他方法,但我这样做是因为 DLL 是二进制的,如果您只是尝试解码它,当您尝试在下面反转此过程时它将失败)然后将您输出的文件作为资源你的EXE。

现在,在您的 EXE 中,您将做相反的事情,最终将您的 DLL 写入硬盘驱动器。

顺便说一句,我用我的压缩字节数组来帮助空间,但这不是必需的。也许您可以将其包含在未来的版本中。

于 2013-10-16T17:02:29.070 回答