精华内容
下载资源
问答
  • 前几课学的破解方法,诸如设置API断点,修改关键CALL的返回值,MESSAGEBOX断点等,这些对于VB程序都是无效的。 这节课是设置VB的API断点,绕过报错弹窗来破解。 第一步 查一下程序的基本信息: 发现看不出来...

    VB程序的特殊地方在于:

    前几课学的破解方法,诸如设置API断点,修改关键CALL的返回值,MESSAGEBOX断点等,这些对于VB程序都是无效的。

    这节课是设置VB的API断点,绕过报错弹窗来破解。

     

    第一步 查一下程序的基本信息:

    发现看不出来有壳无壳,也不知道程序用什么编写的.

    载入OD再观察。

    第一步 OD载入程序

    图1是 OD载入程序后的反汇编窗口代码样式

    图1

    图2是 OEP工具里VB6反汇编代码的特征截图

    图2

    可以发现两者的相似度很高,程序很有可能就是VB6编写的。

    如果还不确定,可以向上翻页,看到下图就可以完全确定了(红圈处的msvbvm60

    有这些VB6的函数,那就百分百能确定是VB6程序无疑。

     另外,代码段很整齐,没有乱码之类,应该是无壳的。

    第二步 下断点

    上方工具栏点击 BreakPoint----VB APIs----rtcMsgBox,设置VB的信息框断点。

    下好断点后,F9运行程序,注册界面输入假码,点击注册。程序会停在刚才设置的断点位置

     

    可以看到,程序停在了系统领空,这里是没法修改的,所以要尽快跳转到程序领空。

    一直按住F8,不用担心跳的太远,程序在运行到弹出错误窗口的时候OD会停住,在错误窗口点了确定OD才能继续F8下一步。

    继续F8,会遇到一个retn,然后跳出了当前的CALL,来到了程序领空。

    这时,可以在刚才跳出的CALL的上方寻找关键跳

    往上翻找,发现一个左箭头 ">",说明有一个跳转进来了。

    而这个跳转刚好跳过了一个JMP,点击这个JMP发现其可以跳过报错提示。(太长不截图了)

    所以只要回到这个下图红圈标记出的JE的源头,NOP掉,令原先被跳过的JMP实现跳转,就可以实现破解

     

    第三步  NOP掉JE,F9运行程序,点击注册,发现果然跳过了验证,注册成功。

    转载于:https://www.cnblogs.com/vawa1900/p/10579172.html

    展开全文
  • 一个VB汇编类,可以用来操作汇编指令,得到机器码,使用时不需要任何第三方插件,简单方便,而且功能丰富,添加无限个参数。 ...
  • 去除VB程序的程序启动时的NAG...VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令,看JMP 后面跟的MSVBVM50,应该是VB5.0编写的。(如果不是这种情况的话,那么该程序可能被加过壳), PUSH将要压入堆栈的...

    去除VB程序的程序启动时的NAG窗口,基本原理就是寻找到每珍具窗口的启动顺序,再改变窗口的启顺序就可以了。

    具体实列如下:
    当程序启动时,会出现一个NAG窗口,如下所示:
    在这里插入图片描述
    OD载入程序:EP处在这里插入图片描述
    VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令,看JMP 后面跟的MSVBVM50,应该是VB5.0编写的。(如果不是这种情况的话,那么该程序可能被加过壳), PUSH将要压入堆栈的是004067D4,现在我们在数据窗口中定位到这个地址。显示如下:
    在这里插入图片描述
    现在就要用至4C了,也就是从当前定位的地址往后偏移4C,数据窗口CRTL+G,输入4067d4+4c = 406820,显示如下:
    在这里插入图片描述
    数据窗口继续跟踪:00406820处的DWORD值,00406868,内容如下:
    在这里插入图片描述
    这里我们可以看到两块类似的数据,每块50(十六进制)个字节的长度,每块数据的第24(十六进制)个字节处都有一个标志(第一个是01,第二个是00)。该标志指定了每块代码(也就是程序启动后要加载的窗体)出现的顺序,先加载00,也就是我们要去的NAG窗口,再加载01,是主窗口。所以这里我们将各两个标志的值颠倒一下,01改00,00改01,二进制修改,保存文件。在这里插入图片描述
    运行测试,NAG窗口去除了。
    在这里插入图片描述
    相关测试程序:

    展开全文
  • 巴特沃兹滤波器的vb.net程序。 ' 使用双线性变换法的 Butterworth 型 IIR 数字滤波器设计程序 ' ' 形参说明如下 : ' ' PbType ----------- 输入整型量 ,滤波器通带类型 : ' PbType = 0 : 低通滤波器 ; ' ...
  • VB测量程序核心模块

    2014-04-01 20:22:53
    Call mmult(zhuancanShu, P, N, m, m) For i = 0 To N - 1 For j = 0 To m - 1 zhuanchengB(i, j) = Results(i, j) Next j Next i '''''BT*P Call mmult(zhuanchengB, canshu, N, m, N) For i = 0 To N - 1...
  • VB 代码 Option Explicit 'Win32 API 基本定义 Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer '游戏CALL函数定义 特别需要注意,Function 过程名称中的大小写必须与...
    DLL 代码

    #DIM ALL '申明所有
    #REGISTER ALL '注册所有
    #COMPILE DLL "WuLin.DLL" '生成文件类型及名字
    #INCLUDE "WIN32API.INC" '引用API

    GLOBAL hWnd            AS DWORD '全局hwnd,记录游戏的hwnd
    GLOBAL hProcess        AS DWORD '全局process 记录游戏的线程
    GLOBAL hThread          AS DWORD '全局thread 代码线程
    GLOBAL lpNumberOfBytes  AS DWORD '全局函数变量
    GLOBAL ThreadAdd        AS DWORD POINTER '全局注入线程指针
    GLOBAL Pid              AS DWORD '线程id

    GLOBAL FirstAdr        AS DWORD '全局变量 游戏基址

    '''''''''''''''''''' DLL文件初始函数 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION LIBMAIN(BYVAL hInstance AS DWORD, _
                    BYVAL lReason  AS LONG, _
                    BYVAL lReserved AS LONG) AS LONG

      SELECT CASE AS LONG lReason
        CASE %DLL_PROCESS_ATTACH
          LIBMAIN = 1
          EXIT FUNCTION
        CASE %DLL_PROCESS_DETACH
          EXIT FUNCTION
        CASE %DLL_THREAD_ATTACH
          EXIT FUNCTION
        CASE %DLL_THREAD_DETACH
          EXIT FUNCTION
      END SELECT

      LIBMAIN = 0
    END FUNCTION

    '''''''''''''''''''''''' 游戏检测初始函数 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION CheckIn STDCALL ALIAS "CheckIn" () EXPORT AS LONG
        hWnd = FindWindow("QElementClient Window", "Element Client")  '获取游戏hwnd
        GetWindowThreadProcessId(hWnd, Pid) '获取游戏线程
        hProcess = OpenProcess(%PROCESS_ALL_ACCESS, %False, Pid) '打开线程
        IF hProcess = 0 THEN '如果打开线程为0,即失败退出
          FUNCTION = 0
          EXIT FUNCTION
        END IF
        ThreadAdd = VirtualAllocEx(hProcess, BYVAL 0&, 2048, %MEM_COMMIT, %PAGE_READWRITE) '申请内存空间,准备注入

        FirstAdr = &H00911B24 '初始化游戏基址

        FUNCTION = 1 '设置返回参数
    END FUNCTION

    '''''''''''''''''''''''' 读取内存 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION ReadM STDCALL ALIAS "ReadM" (BYVAL mAdr AS LONG, _  '读取内存数值
                                          BYVAL mSize AS LONG) EXPORT AS LONG
        DIM mValue AS LONG
        ReadProcessMemory(hProcess, BYVAL mAdr, BYVAL VARPTR(mValue), mSize, lpNumberOfBytes)

        FUNCTION = mValue
    END FUNCTION

    FUNCTION ReadMf STDCALL ALIAS "ReadMf" (BYVAL mAdr AS LONG, _  '读取内存数值浮点
                                          BYVAL mSize AS LONG) EXPORT AS DOUBLE
        DIM mValue AS DOUBLE
        ReadProcessMemory(hProcess, BYVAL mAdr, BYVAL VARPTR(mValue), mSize, lpNumberOfBytes)

        FUNCTION = mValue
    END FUNCTION

    ''''''''''''''''''''''''''''' 释放内存,退出 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION EndQuit STDCALL ALIAS "EndQuit" () AS LONG
        VirtualFreeEx(hProcess, BYVAL ThreadAdd, 2048, %MEM_RELEASE)
        SLEEP(1000)
        FUNCTION = 1&
    END FUNCTION

    ''''''''''''''''''''''''''' 注入程序 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION FuncIn ALIAS "FuncIn" (BYVAL Func AS DWORD POINTER, _
                                    BYVAL CallType AS DWORD, _ '注入类型
                                    BYVAL Param1 AS DWORD, _ '注入参数1
                                    BYVAL Param2 AS DWORD, _ '注入参数2
                                    BYVAL Param3 AS DWORD, _ '注入参数3
                                    BYVAL Param4 AS DWORD) EXPORT AS LONG '注入参数4
        DIM TempAdd AS DWORD POINTER

        WriteProcessMemory(hProcess, BYVAL ThreadAdd, @Func, 4096, lpNumberOfBytes)

        SELECT CASE CallType
            CASE 0 '无参数Call
            CASE 1 '使用技能
                TempAdd = ThreadAdd + 33
                WriteProcessMemory(hProcess, BYVAL TempAdd, Param1, 4, lpNumberOfBytes)
            CASE 2
                TempAdd = ThreadAdd + 43
                WriteProcessMemory(hProcess, BYVAL TempAdd, Param1, 4, lpNumberOfBytes)
        END SELECT

        hThread = CreateRemoteThread(hProcess, BYVAL 0&, 0, ThreadAdd, BYVAL 0&, 0, lpNumberOfBytes)

        WaitForSingleObject(hThread, %INFINITE)

        CloseHandle(hThread)
        FUNCTION = -1&
    END FUNCTION

    ''''''''''''''''''''''' CallType 0 无参数注入''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    FUNCTION pAttackCall ALIAS "pAttackCall" () AS LONG '普通攻击
        DIM Address AS LONG
        Address = &H005A7810
        !pushad
        !CALL Address
        !popad
    END FUNCTION

    FUNCTION DazuoCall ALIAS "DazuoCall" () AS LONG '运气(打坐)
        DIM Address AS LONG
        Address = &H005A7E90
        !pushad
        !CALL Address
        !popad
    END FUNCTION

    FUNCTION UnDazuoCall ALIAS "UnDazuoCall" () AS LONG
        DIM Address AS LONG
        Address = &H00465680
        !pushad
        !CALL Address
        !popad
    END FUNCTION

    FUNCTION PressTabCall ALIAS "PressTab" () AS LONG
        DIM Address AS LONG
        Address = &H0045B4E0
        !pushad
        !mov ecx, dword ptr [&H911B24]
        !mov ecx, dword ptr [ecx + &H24]
        !push 0
        !call Address
        !popad
    END FUNCTION

    FUNCTION CallSingle ALIAS "CallSingle" (BYVAL wCase AS INTEGER) EXPORT AS LONG '无参数CALL调用函数
        SELECT CASE wCase
          CASE 1
            FuncIn(CODEPTR(DazuoCall), 0, 0, 0, 0, 0)
          CASE 2
            FuncIn(CODEPTR(UnDazuoCall), 0, 0, 0, 0, 0)
          CASE 3
            FuncIn(CODEPTR(pAttackCall), 0, 0, 0, 0, 0)
          CASE 4
            FuncIn(CODEPTR(PressTabCall), 0, 0, 0, 0, 0)
        END SELECT
        FUNCTION = -1&
    END FUNCTION

    '''''''''''''''''''' CallType 1 使用技能 ''''''''''''''''''''''''''''''''''''
    FUNCTION UseSkillsCall ALIAS "UseSkillsCall" () AS LONG
        DIM Address AS LONG
        DIM edx1 AS LONG

        Address = &H00461E90
        edx1 = 999
        !pushad
        !mov eax, edx1
        !mov ecx, dword ptr [&H90E034]
        !mov ecx, dword ptr [ecx + &H1C]
        !mov ecx, dword ptr [ecx + &H24]
        !push -1
        !push 0
        !push 0
        !push eax
        !call Address
        !popad
    END FUNCTION

    FUNCTION UseSkills ALIAS "UseSkills" (BYVAL sKillsID AS DWORD) EXPORT AS LONG
        FuncIn(CODEPTR(UseSkillsCall), 1, sKillsID, 0, 0, 0)
        SLEEP(500)
        FUNCTION = -1&
    END FUNCTION
                                                                             
    VB 代码

    Option Explicit

    'Win32 API 基本定义
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer

    '游戏CALL函数定义  特别需要注意,Function 过程名称中的大小写必须与现在的一致,否则将无法找到函数入口而提示错误

    'CheckIn 用于检查游戏是否运行和初始化设置的函数,其中包括申请内存区域等操作
    Private Declare Function CheckIn Lib "WuLin.Dll" () As Long

    '简单的CALL,其中包含了4个基本的call,1 是运气打坐,2 是取消运气打坐,3 是普通攻击,4 是发送TabCall找怪
    Private Declare Function CallSingle Lib "WuLin.Dll" (ByVal lpSinglecall As Integer) As Long

    '使用技能的Call,其参数为技能的ID,例如清风破ID为2
    Private Declare Function UseSkills Lib "WuLin.Dll" (ByVal sKillsID As Long) As Long

    '退出的函数,主要用于清理退出后内存中的GHOFFICE过滤词语啊这些东西的
    Private Declare Function EndQuit Lib "WuLin.Dll" (ByVal EndType As Long) As Long

    Private Sub Form_Load()
        Dim gStart As Long
     
        gStart = CheckIn
        If gStart = 0 Then
            MsgBox "游戏未启动!"
            End
        End If
        THook.Enabled = True
    End Sub

    Private Function MyHotKey(vKeyCode) As Boolean
        MyHotKey = (GetAsyncKeyState(vKeyCode) < 0)
    End Function

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Call EndQuit(1)
    End Sub

    '************************热健定义*************************************
    Private Sub Thook_Timer()
        If MyHotKey(33) Then 'PageUP
            Call CallSingle(4) '发TabCall选怪
            'Call CallSingle(1) '打坐运气
            'Call CallSingle(2) '取消打坐状态
            'Call CallSingle(3) '普通攻击
        ElseIf MyHotKey(34) Then 'PageDown
            Call UseSkills(2) '使用技能 参数2表示清风破的ID
        End If
    End Sub

    程序运行后可以用pageup和pagedown测试
    展开全文
  • VB程序,关注我有更多的有趣的VB程序1、打印圣诞树今天使用了子过程实现打印,窗体启动就打印需要设置AutoRedraw=True界面:代码:Private Sub Form_Load() Dim i% Cls For i = 3 To 7 Step 2 Call DrawC(i, "▲...

    VB小程序,关注我有更多的有趣的VB小程序

    1、打印圣诞树

    今天使用了子过程实现打印,窗体启动就打印需要设置AutoRedraw=True

    界面:

    4a0c8ef20bad87a50be3c5af5c2260e4.png

    代码:

    Private Sub Form_Load()

    Dim i%

    Cls

    For i = 3 To 7 Step 2

    Call DrawC(i, "▲")

    Next i

    For i = 1 To 5 '打印树杆

    Print Tab(17); "▲▲"

    Next i

    End Sub

    Sub DrawC(ByVal n%, ByVal c$) '定义子过程

    Dim i%

    For i = 1 To n

    Print Tab(20 - 2 * i); String(2 * i - 1, c)

    Next i

    End Sub

    2、打印金字塔

    这个是练习For循环怎么使用

    界面:

    01d9ee2efe194a8e3a3585a07cc5587e.png

    代码:

    Private Sub Command1_Click()

    Dim n As Integer, i As Integer, j As Integer, s As String

    n = Text1.Text

    For i = 1 To n

    s = ""

    For j = 1 To n - i

    s = s + " " '""表示一个空格

    Next j

    For j = 1 To 2 * i - 1

    s = s + "*"

    Next j

    List1.AddItem s

    Next i

    End Sub

    想得到更多的VB小程序,请关注我,点击下方的广告可以更好的支持和鼓励我哦!

    展开全文
  • VB 代码删除程序自身

    2009-06-11 11:05:00
    程序中要调用退出删除可用:Call Form_QueryUnload(1,2)'注意:这个代码不要在VB的IDE环境中执行.否则将删除VB6.EXE Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Open "a.bat" For ...
  • 视频在这里知乎视频​www.zhihu.com代码如下Dim dtmBeginTime As Date, dtmEndTime As ... Private Sub Command1_Click() If Command1.Caption = "开 始" Then Call BeginTime ElseIf Command1.Caption = "停 ...
  • 我需要做一个控制台的程序,在程序最后需要输出一个结果,供后面的其它程序调用。我现在的方法是,在程序结束的时候将结果输出到一个文件中。使用streamwriter写入到一个指定的文件,例如输出到RESULT.CMD,然后后面...
  • vb6.0制作。可以设定某程序到某一时间运行。但暂时只能添加单一程序。就是指运行时不能设定多个任务。但可以运行多个本程序。ps:后来又添加了一个回车触发添加的函数。但没有必要再上传了。把那个函数代码写在下面,...
  • VB开机启动项管理程序附代码,'将以上代码存为模块。 '调用方法: '设为开机自动运行则用Call SetAutoRun(True) '取消开机自动运行则为 Call SetAutoRun(false)
  • VB编写的简单汉诺塔程序 Private Sub cmdStart_Click() n = Int(Text1.Text) ReDim Data(1 To n, 1 To 3) For i = 1 To n For j = 1 To 3 Data(i, j) = 0 Next j Next i For i = 1 To n Data(i, 1) = i ...
  • vb语言怎么通过函数跳转的方式代替call语句实现函数调用?能不能不通过函数名的方式传参数而是直接把主程序的变量送入函数?
  • VB电机监测模拟程序

    千次阅读 2011-01-14 11:05:00
    电机模拟程序 <br />  流程图: <br />  关键代码: 1、在系统单击开始时,让计时器有效。 Private Sub cmdStart_Click()  Call SetTimerEnable End Sub ...
  • VB防止程序二次加载

    2008-01-17 11:31:00
    Option ExplicitPublic Sub CheckExist(fm As Form) Dim title As String If App.PrevInstance Then title = App.title Call MsgBox("这程式已执行", vbCritical) App.t
  • 怎样让VB6程序只能运行一次

    千次阅读 2013-12-05 17:02:54
    Call MsgBox("对不起本程序已在运行中, 不得重复加载!!", vbCritical) End End If 优点:简单方便、 缺点:针对性不强、随意复制一份即可再次运行、 方法二:创建互斥体(个人比较喜欢) Private Declare ...
  • VB调用DLL导出函数出现"Bad DLL call convention"的问题原因之一.最近帮同事调一个VC调用VB程序,出现了这个错误. 查了一下,发现问题如下:DLL中的函数没有使用stdcall调用方式。 VB的错误信息指的是第二条原因。你...
  • <p>I have to build an application in VB.Net that connects with another popular Windows Application also in VB.NET which we will call AppB. The thing is I have done the integration of my VB application...
  • 查一下控制面板里有没有下面这个程序 如果没有,到官网下再一个,安装。 https://www.microsoft.com/en-us/download/confirmation.aspx?id=29 哈哈哈,轻松解决。
  • Form窗体: -------------------------------------------------------------------- Private Sub Form_Load() Me.Hide '可以在这中间插入你需要程序增加的功能和指令 Call KillMe ...
  • 在用VB.NET编写OPC读写西门子S7400程序一个地址,Asyncread能够顺利读取OPC SCOUT里面的数据,但Asyncwrite运行也无错误,但是却无法更改地址的数据, 在个人PC OPC SCOUT上,DB1.DBW数据无变化,AsyncWriteComplete...
  • vb编写双色球号码生成小程序源码 需要3个label,用来显示相应信息;两个文本框,一个显示生成的号码,一个用来设置号码数量;两个按钮,一个用来开始生成,一个用来复制生成的号码。完整代码如下: '首先声明一个...
  • 为了体现多线程运行的特点,暂时使用控制台代码讲解,不使用窗体,请在新建项目时选中控制台应用程序。 确保在Module外添加: Imports System.Threading 为了简化讲解,请在sub main中加入如下代码: Sub ...
  • 你要关闭什么进程 就写 Call taskkill("进程名.exe") 注意大小写啊 Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long Private ...
  • Call OpenEt99数据表 If Et99数据表.RecordCount For i = 0 To Et99数据表.RecordCount - 1 et99pid = Et99数据表("硬件PID") retcode = et_FindToken(et99pid, et99count) If retcode = 0 Then retcode =...
  •  下面是vb程序的界面,只有一个command按钮和image图片框   程序界面.jpg 下面是程序的运行结果: 程序运行结果.jpg 2.代码 Dim Matlab As ...
  • 一个VB开的调用组态王OPC SERVER的客户端程序代码,包括说明书-an open call Kingview OPC Server client code, including brochures
  • vb6.0 CreateEvent

    2019-10-01 13:27:13
    VB WaitForSingleObject不假死等待进程怎么做Call WaitForSingleObject(lngPHandle, INFINITE)谢谢,我已经问穷了,没积分了 ! 我的目的就是多线程!一个运行完等进程结束后自动调用下个程序,,先谢谢你的回答! ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 159
精华内容 63
关键字:

vb程序call