ce吧 关注:195,796贴子:3,798,892

vb课程第二课,基础的写法,实现调用call

只看楼主收藏回复

在开课前给大家看个东西


1楼2019-06-24 20:05回复

    如果这样写,我们把生成的dll丢od看看会怎样

    很明显,有字符串特征,别人还容易破解,那么怎么影藏呢?请听我慢慢道来


    2楼2019-06-24 20:14
    回复
      前排出售瓜子饮料


      IP属地:浙江3楼2019-06-24 20:20
      回复

        假如我们把字符写成一个个unicode码组成呢?效果如下

        字符串就影藏了,这样,就不怕被特征了,不怕被别人破解了 !
        转换源码等我打包分享,上传


        4楼2019-06-24 20:21
        回复

          在dllmain函数哪里加上CreateIExprSrvObj 0, 4, 0
          为了vb的组件运行更稳定更快


          6楼2019-06-24 20:36
          回复

            添加一个模块

            新建一个吧

            在这里改模块名


            7楼2019-06-24 20:40
            回复
              Option Explicit
              Public Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
              Public Declare Function CreateThread Lib "kernel32" (ByVal lpSecurityAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
              Public Type 参数
              address As Long 'addressof sub or fun
              ThreadInf As Long '线程信息
              CriticalAI As Long '临界区标识
              'reserved As Long
              Arguments As Long '参数数量
              End Type
              Public Const CREATE_DEFAULT = &H0& '默认值,创建一个立即运行的线程
              Public Function VBCreatThread(ByVal address As Long, ByVal CriticalAI As Long, ByRef ThreadID As Long) As Boolean
              Dim a As Long, HandleOfThread As Long, PassParameters As 参数, Arguments As Long
              Arguments = 1
              a = VirtualAllocEx(-1, 0, 20 + (Arguments * 4), MEM_COMMIT, PAGE_EXECUTE_READWRITE)
              If a = 0 Then: Exit Function
              With PassParameters
              .address = address '0
              .ThreadInf = 0 '4 线程返回信息
              .CriticalAI = CriticalAI '8
              .Arguments = Arguments * 4 '10
              End With
              RtlMoveMemory a, ByVal VarPtr(PassParameters), 20
              'WriteProcessMemory -1, a, ByVal VarPtr(PassParameters), 20, 0
              '-----------------------常规信息
              PutMem4 a + 20, 0&
              'WriteProcessMemory -1, a + 20, 0, Arguments * 4, 0
              '-----------------------参数信息
              HandleOfThread = CreateThread(ByVal 0&, ByVal 0&, address, a, ByVal CREATE_DEFAULT, ThreadID) '创建立即执行
              ' WaitForSingleObject 线程句柄, &HFFFF
              ' CloseHandle 线程句柄
              End Function
              '这里是线程循环结构
              Public Sub MainThread()
              Do While (True)
              PutMem4 &H400500, 1&
              Loop
              End Sub
              新建的模块添加上列代码,创建属于我们自己的线程执行我们自己的功能


              8楼2019-06-24 21:15
              回复

                dll入后添加如下代码!


                9楼2019-06-24 21:17
                回复
                  '这里是线程循环结构
                  Public Sub MainThread()
                  Do While (True)
                  PutMem4 &H400500, 1&
                  Loop
                  End Sub
                  这段是线程不断循环的函数, 不断往400500里面写1,编译一个dll,上游戏看看效果,发现你把400500的数值改了,它又会马上写入1.那么你就创建线程成功了。


                  10楼2019-06-24 21:19
                  回复
                    创建线程成功,接下来就是要取,有用的模块


                    11楼2019-06-24 21:20
                    回复
                      新建一个模块,并命名为:GetMoudleHandle。


                      12楼2019-06-24 21:21
                      回复
                        '模块地址
                        Public MSVBVM60 As Long
                        Public Ntdll As Long
                        Public kernel32 As Long
                        Public KERNELBASE As Long
                        Public TerSafe As Long
                        Public TenRPCS As Long
                        Public GameRpcs As Long
                        Public DNFBase As Long
                        Public fmodex As Long
                        Public user32 As Long
                        Public Tcj As Long
                        Public MyDllHandle As Long
                        Public Ierd_Tgp_Lsp As Long
                        Public Gcloudvoice As Long
                        Public GameDataPlatformServer As Long
                        '函数地址
                        Public KERNELBASE_LoadLibraryExW As Long
                        Public MSVBVM60_vbaSetSystemError As Long
                        Public USER32_PeekMessageW As Long
                        Public MSVBVM60_Zombie_AddRef As Long
                        Public MSVBVM60_vbaCopyBytes As Long
                        Public Ntdll_NtAllocateVirtualMemory As Long
                        Public MSVBVM60_GetMem1 As Long
                        Public KERNELBASE_VirtualProtectEx As Long
                        Public Ntdll_RtlFlushSecureMemoryCache As Long
                        Public Ntdll_ZwProtectVirtualMemory As Long
                        '取函数地址
                        Public Function GetProAdd() As Long
                        Dim Name As String
                        Dim i As Long
                        'KERNELBASE.LoadLibraryExW
                        If KERNELBASE_LoadLibraryExW = 0 Then
                        Name = ChrW(&H4C) + ChrW(&H6F) + ChrW(&H61) + ChrW(&H64) + ChrW(&H4C) + ChrW(&H69) + ChrW(&H62) + ChrW(&H72) + ChrW(&H61) + ChrW(&H72) + ChrW(&H79) + ChrW(&H45) + ChrW(&H78) + ChrW(&H57)
                        KERNELBASE_LoadLibraryExW = GetProcAddress(KERNELBASE, Name)
                        If KERNELBASE_LoadLibraryExW <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'MSVBVM60._vbaSetSystemError
                        If MSVBVM60_vbaSetSystemError = 0 Then
                        Name = ChrW(&H5F) + ChrW(&H5F) + ChrW(&H76) + ChrW(&H62) + ChrW(&H61) + ChrW(&H53) + ChrW(&H65) + ChrW(&H74) + ChrW(&H53) + ChrW(&H79) + ChrW(&H73) + ChrW(&H74) + ChrW(&H65) + ChrW(&H6D) + ChrW(&H45) + ChrW(&H72) + ChrW(&H72) + ChrW(&H6F) + ChrW(&H72)
                        MSVBVM60_vbaSetSystemError = GetProcAddress(MSVBVM60, Name)
                        If MSVBVM60_vbaSetSystemError <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'USER32.PeekMessageW
                        If USER32_PeekMessageW = 0 Then
                        Name = ChrW(&H50) + ChrW(&H65) + ChrW(&H65) + ChrW(&H6B) + ChrW(&H4D) + ChrW(&H65) + ChrW(&H73) + ChrW(&H73) + ChrW(&H61) + ChrW(&H67) + ChrW(&H65) + ChrW(&H57)
                        USER32_PeekMessageW = GetProcAddress(user32, Name)
                        If USER32_PeekMessageW <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'MSVBVM60.Zombie_AddRef
                        If MSVBVM60_Zombie_AddRef = 0 Then
                        Name = ChrW(&H5A) + ChrW(&H6F) + ChrW(&H6D) + ChrW(&H62) + ChrW(&H69) + ChrW(&H65) + ChrW(&H5F) + ChrW(&H41) + ChrW(&H64) + ChrW(&H64) + ChrW(&H52) + ChrW(&H65) + ChrW(&H66)
                        MSVBVM60_Zombie_AddRef = GetProcAddress(MSVBVM60, Name)
                        If MSVBVM60_Zombie_AddRef <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'Ntdll.NtAllocateVirtualMemory
                        If Ntdll_NtAllocateVirtualMemory = 0 Then
                        Name = ChrW(&H4E) + ChrW(&H74) + ChrW(&H41) + ChrW(&H6C) + ChrW(&H6C) + ChrW(&H6F) + ChrW(&H63) + ChrW(&H61) + ChrW(&H74) + ChrW(&H65) + ChrW(&H56) + ChrW(&H69) + ChrW(&H72) + ChrW(&H74) + ChrW(&H75) + ChrW(&H61) + ChrW(&H6C) + ChrW(&H4D) + ChrW(&H65) + ChrW(&H6D) + ChrW(&H6F) + ChrW(&H72) + ChrW(&H79)
                        Ntdll_NtAllocateVirtualMemory = GetProcAddress(Ntdll, Name)
                        If Ntdll_NtAllocateVirtualMemory <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'MSVBVM60.vbaCopyBytes
                        If MSVBVM60_vbaCopyBytes = 0 Then
                        Name = ChrW(&H5F) + ChrW(&H5F) + ChrW(&H76) + ChrW(&H62) + ChrW(&H61) + ChrW(&H43) + ChrW(&H6F) + ChrW(&H70) + ChrW(&H79) + ChrW(&H42) + ChrW(&H79) + ChrW(&H74) + ChrW(&H65) + ChrW(&H73)
                        MSVBVM60_vbaCopyBytes = GetProcAddress(MSVBVM60, Name)
                        If MSVBVM60_vbaCopyBytes <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'MSVBVM60.GetMem1
                        If MSVBVM60_GetMem1 = 0 Then
                        Name = ChrW(&H47) + ChrW(&H65) + ChrW(&H74) + ChrW(&H4D) + ChrW(&H65) + ChrW(&H6D) + ChrW(&H31)
                        MSVBVM60_GetMem1 = GetProcAddress(MSVBVM60, Name)
                        If MSVBVM60_GetMem1 <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'KERNELBASE.VirtualProtectEx
                        If KERNELBASE_VirtualProtectEx = 0 Then
                        Name = ChrW(&H56) + ChrW(&H69) + ChrW(&H72) + ChrW(&H74) + ChrW(&H75) + ChrW(&H61) + ChrW(&H6C) + ChrW(&H50) + ChrW(&H72) + ChrW(&H6F) + ChrW(&H74) + ChrW(&H65) + ChrW(&H63) + ChrW(&H74) + ChrW(&H45) + ChrW(&H78)
                        KERNELBASE_VirtualProtectEx = GetProcAddress(KERNELBASE, Name)
                        If KERNELBASE_VirtualProtectEx <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'ntdll.RtlFlushSecureMemoryCache
                        If Ntdll_RtlFlushSecureMemoryCache = 0 Then
                        Name = ChrW(&H52) + ChrW(&H74) + ChrW(&H6C) + ChrW(&H46) + ChrW(&H6C) + ChrW(&H75) + ChrW(&H73) + ChrW(&H68) + ChrW(&H53) + ChrW(&H65) + ChrW(&H63) + ChrW(&H75) + ChrW(&H72) + ChrW(&H65) + ChrW(&H4D) + ChrW(&H65) + ChrW(&H6D) + ChrW(&H6F) + ChrW(&H72) + ChrW(&H79) + ChrW(&H43) + ChrW(&H61) + ChrW(&H63) + ChrW(&H68) + ChrW(&H65)
                        Ntdll_RtlFlushSecureMemoryCache = GetProcAddress(Ntdll, Name)
                        If Ntdll_RtlFlushSecureMemoryCache <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        'ntdll.ZwProtectVirtualMemory
                        If Ntdll_ZwProtectVirtualMemory = 0 Then
                        Name = ChrW(&H5A) + ChrW(&H77) + ChrW(&H50) + ChrW(&H72) + ChrW(&H6F) + ChrW(&H74) + ChrW(&H65) + ChrW(&H63) + ChrW(&H74) + ChrW(&H56) + ChrW(&H69) + ChrW(&H72) + ChrW(&H74) + ChrW(&H75) + ChrW(&H61) + ChrW(&H6C) + ChrW(&H4D) + ChrW(&H65) + ChrW(&H6D) + ChrW(&H6F) + ChrW(&H72) + ChrW(&H79)
                        Ntdll_ZwProtectVirtualMemory = GetProcAddress(Ntdll, Name)
                        If Ntdll_ZwProtectVirtualMemory <> 0 Then
                        i = i + 1
                        End If
                        Else
                        i = i + 1
                        End If
                        End Function


                        13楼2019-06-24 21:24
                        回复
                          好像被限制回帖了 被度娘怀疑灌水了


                          14楼2019-06-24 21:27
                          回复
                            '取模块句柄
                            Public Function GetMoudleHandle() As Long
                            Dim S As String
                            Dim i As Long
                            'ntdll
                            If Ntdll = 0 Then
                            S = ChrW(&H6E) + ChrW(&H74) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            Ntdll = GetModuleHandleW(StrPtr(S))
                            If Ntdll <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'kernel32
                            If kernel32 = 0 Then
                            S = ChrW(&H6B) + ChrW(&H65) + ChrW(&H72) + ChrW(&H6E) + ChrW(&H65) + ChrW(&H6C) + ChrW(&H33) + ChrW(&H32) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            kernel32 = GetModuleHandleW(StrPtr(S))
                            If kernel32 <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'KERNELBASE
                            If KERNELBASE = 0 Then
                            S = ChrW(&H4B) + ChrW(&H45) + ChrW(&H52) + ChrW(&H4E) + ChrW(&H45) + ChrW(&H4C) + ChrW(&H42) + ChrW(&H41) + ChrW(&H53) + ChrW(&H45) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            KERNELBASE = GetModuleHandleW(StrPtr(S))
                            If KERNELBASE <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'TerSafe
                            If TerSafe = 0 Then
                            S = ChrW(&H54) + ChrW(&H65) + ChrW(&H72) + ChrW(&H53) + ChrW(&H61) + ChrW(&H66) + ChrW(&H65) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            TerSafe = GetModuleHandleW(StrPtr(S))
                            If TerSafe <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'TenRPCS
                            If TenRPCS = 0 Then
                            S = ChrW(&H54) + ChrW(&H65) + ChrW(&H6E) + ChrW(&H52) + ChrW(&H50) + ChrW(&H43) + ChrW(&H53) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            TenRPCS = GetModuleHandleW(StrPtr(S))
                            If TenRPCS <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'GameRpcs
                            If GameRpcs = 0 Then
                            S = ChrW(&H47) + ChrW(&H61) + ChrW(&H6D) + ChrW(&H65) + ChrW(&H52) + ChrW(&H70) + ChrW(&H63) + ChrW(&H73) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            GameRpcs = GetModuleHandleW(StrPtr(S))
                            If GameRpcs <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'DNFBase
                            If DNFBase = 0 Then
                            S = ChrW(&H44) + ChrW(&H4E) + ChrW(&H46) + ChrW(&H42) + ChrW(&H61) + ChrW(&H73) + ChrW(&H65) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            DNFBase = GetModuleHandleW(StrPtr(S))
                            If DNFBase <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'fmodex
                            If fmodex = 0 Then
                            S = ChrW(&H66) + ChrW(&H6D) + ChrW(&H6F) + ChrW(&H64) + ChrW(&H65) + ChrW(&H78) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            fmodex = GetModuleHandleW(StrPtr(S))
                            If fmodex <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'MSVBVM60
                            If MSVBVM60 = 0 Then
                            S = ChrW(&H4D) + ChrW(&H53) + ChrW(&H56) + ChrW(&H42) + ChrW(&H56) + ChrW(&H4D) + ChrW(&H36) + ChrW(&H30) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            MSVBVM60 = GetModuleHandleW(StrPtr(S))
                            If MSVBVM60 <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'USER32
                            If user32 = 0 Then
                            S = ChrW(&H55) + ChrW(&H53) + ChrW(&H45) + ChrW(&H52) + ChrW(&H33) + ChrW(&H32) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            user32 = GetModuleHandleW(StrPtr(S))
                            If user32 <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'tcj
                            If Tcj = 0 Then
                            S = ChrW(&H74) + ChrW(&H63) + ChrW(&H6A) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            Tcj = GetModuleHandleW(StrPtr(S))
                            If Tcj <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'Ierd_Tgp_Lsp
                            If Ierd_Tgp_Lsp = 0 Then
                            S = ChrW(&H49) + ChrW(&H65) + ChrW(&H72) + ChrW(&H64) + ChrW(&H5F) + ChrW(&H54) + ChrW(&H67) + ChrW(&H70) + ChrW(&H5F) + ChrW(&H4C) + ChrW(&H73) + ChrW(&H70) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            Ierd_Tgp_Lsp = GetModuleHandleW(StrPtr(S))
                            If Ierd_Tgp_Lsp <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            'Gcloudvoice
                            If Gcloudvoice = 0 Then
                            S = ChrW(&H47) + ChrW(&H63) + ChrW(&H6C) + ChrW(&H6F) + ChrW(&H75) + ChrW(&H64) + ChrW(&H76) + ChrW(&H6F) + ChrW(&H69) + ChrW(&H63) + ChrW(&H65) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            Gcloudvoice = GetModuleHandleW(StrPtr(S))
                            If Gcloudvoice <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            If i = 10 Then
                            IsGetMoudle = &HFFFFFFFF
                            End If
                            'GameDataPlatformServer
                            If GameDataPlatformServer = 0 Then
                            S = ChrW(&H47) + ChrW(&H61) + ChrW(&H6D) + ChrW(&H65) + ChrW(&H44) + ChrW(&H61) + ChrW(&H74) + ChrW(&H61) + ChrW(&H50) + ChrW(&H6C) + ChrW(&H61) + ChrW(&H74) + ChrW(&H66) + ChrW(&H6F) + ChrW(&H72) + ChrW(&H6D) + ChrW(&H53) + ChrW(&H65) + ChrW(&H72) + ChrW(&H76) + ChrW(&H65) + ChrW(&H72) + ChrW(&H2E) + ChrW(&H64) + ChrW(&H6C) + ChrW(&H6C)
                            GameDataPlatformServer = GetModuleHandleW(StrPtr(S))
                            If GameDataPlatformServer <> 0 Then
                            i = i + 1
                            End If
                            Else
                            i = i + 1
                            End If
                            If i = 10 Then
                            IsGetMoudle = &HFFFFFFFF
                            End If
                            End Function


                            15楼2019-06-24 21:27
                            回复
                              上面这段是取模块,上上面的是取函数地址,几乎用到的都在这里了。


                              16楼2019-06-24 21:27
                              回复