首页
社区
课程
招聘
[求助]请高手指导这段VB程序的实现。
发表于: 2016-10-27 14:09 4106

[求助]请高手指导这段VB程序的实现。

2016-10-27 14:09
4106
各位高手,下面是一个用VBDecompiler9.8破解的VB程序,但里面还带有寄存器的信息,很难看得懂。请问有高手们帮忙指导一下这个加密函数的实现原理么,谢谢!
Public Sub Proc_1_0_1137D7D0
  call __vbaAptOffset(var_11008928, edi, esi, ebx)
  var_20 = arg_8
  ReDim var_2C(edi To 4096)
  var_9C = Len(var_20)
  If 00000001h <= 0 Then
    var_44 = Mid$(var_20, 1, 1)
    var_60 = Asc(var_44)
    var_28 = Hex$(Asc(var_44))
    If Len(var_28) = 4 Then
      If var_2C Then
        If var_2C <> 1 Then GoTo loc_1137D92A
        esi = esi - eax+00000014h
        If esi < 0 Then GoTo loc_1137D932
        var_eax = Err.Raise
        GoTo loc_1137D932
  loc_1137D92A:
  loc_1137D92A:
  loc_1137D932:
      call __vbaUI1Str("&H" & Mid$(var_28, 1, 2))
      esi-eax+00000014h = esi-eax+00000014h + 00000001h
      If var_2C Then
        If var_2C <> 1 Then GoTo loc_1137D9BE
        esi-eax+00000014h = esi-eax+00000014h - eax+00000014h
        If esi-eax+00000014h < 0 Then GoTo loc_1137D9C6
        var_eax = Err.Raise
        GoTo loc_1137D9C6
  loc_1137D9BE:
  loc_1137D9BE:
  loc_1137D9C6:
      call __vbaUI1Str("&H" & Mid$(var_28, 3, 2))
      GoTo loc_1137DA78
    End If
    If var_2C Then
      If var_2C <> 1 Then GoTo loc_1137DA41
      esi-eax+00000014h = esi-eax+00000014h - eax+00000014h
      If esi-eax+00000014h < 0 Then GoTo loc_1137DA49
      var_eax = Err.Raise
      GoTo loc_1137DA49
  loc_1137DA41:
  loc_1137DA41:
  loc_1137DA49:
    call __vbaUI1Str("&H" & var_28)
  loc_1137DA78:
    esi-eax+00000014h = esi-eax+00000014h + 00000001h
    00000001h = 00000001h + var_18
    GoTo loc_1137D87A
  End If
  var_eax = call Proc_1_1_1137DF70(, , )
  esi-eax+00000014h = esi-eax+00000014h - 00000001h
  var_A4 = esi-eax+00000014h
  If eax <= 0 Then
    If var_2C Then
      If var_2C <> 1 Then GoTo loc_1137DAE1
      eax = eax - ecx+00000014h
      If eax < 0 Then GoTo loc_1137DAEC
      var_eax = Err.Raise
      GoTo loc_1137DAE9
  loc_1137DAE1:
  loc_1137DAE1:
  loc_1137DAE9:
  loc_1137DAEC:
    var_94 = eax+edi
    If eax+edi >= 256 Then
      var_eax = Err.Raise
    End If
    If var_2C Then
      If var_2C <> 1 Then GoTo loc_1137DB39
      var_18 = var_18 - ecx+00000014h
      If var_18 >= 0 Then
        var_eax = Err.Raise
      End If
      GoTo loc_1137DB42
  loc_1137DB39:
  loc_1137DB39:
  loc_1137DB42:
    00000001h = 00000001h + var_18
    GoTo loc_1137DAB6
  End If
  esi-eax+00000014h = esi-eax+00000014h - 00000001h
  ReDim var_34(edi To esi-eax+00000014h)
  esi-eax+00000014h = esi-eax+00000014h - 00000001h
  var_18 = esi-eax+00000014h
  If esi-eax+00000014h >= 0 Then
    If var_2C Then
      If var_2C <> 1 Then GoTo loc_1137DBDD
      esi-eax+00000014h = esi-eax+00000014h - ecx+00000014h
      If esi-eax+00000014h >= 0 Then
        var_eax = Err.Raise
      End If
      var_C4 = esi-eax+00000014h
      GoTo loc_1137DBE9
  loc_1137DBDD:
  loc_1137DBDD:
    var_C4 = Err.Raise
  loc_1137DBE9:
    If var_34 Then
      If var_34 <> 1 Then GoTo loc_1137DC25
      esi-eax+00000014h = esi-eax+00000014h - var_18
      esi-eax+00000014h = esi-eax+00000014h - 00000001h
      esi-eax+00000014h = esi-eax+00000014h - ecx+00000014h
      If esi-eax+00000014h >= 0 Then
        var_eax = Err.Raise
      End If
      GoTo loc_1137DC2E
  loc_1137DC25:
  loc_1137DC25:
  loc_1137DC2E:
    True = True + var_18
    var_18 = True
    GoTo loc_1137DBAA
  End If
  esi-eax+00000014h = esi-eax+00000014h - 00000001h
  var_B4 = esi-eax+00000014h
  If esi <= 0 Then
    esi = esi * 2
    If Not Sign(-2147483137 - 0) Then
      eax = -2147483137 - 1
      eax = -512 + 1
    End If
    -512 + 1 = -512 + 1 + 00000001h
    var_44 = Mid$("72281E66C6F7997B32EA54CA0668337C5F6756EE9F18399413D3F8D40322F273C83E97EF58A56F77E00589B0D95CF5311F62B1EB7420A1F32ADBF1812649BC360BCFB9A7A6527021B5F678A0C34A11247FC50F1CF94EC44F932984BAD50EF4E99AB4408F9C53C90A1486C2A9AE79ADD1DC5A1B8217ECD82EBB6A428DFBB3BE35E3AAB8AB23E592AF5D6E27CD7D34F0BF9BE66D2CAC450109107ADF076B8748754D85E71D1A592BB212983D1938B70C8B5146DE25CCA36383FA3A0D3B47D7C060550271D680FD6C8E8AC19E9188502DA43C16E45B375E3F08D2437EFE41E14B6544E8DDDA15FCB6A82F9D0464956976BDCB574CE2CE969030008CD0C761EDA2FF", -512 + 1, 2)
    var_48 = "&H" & var_44
    call __vbaUI1Str(var_48)
    var_30 = __vbaUI1Str(var_48)
    If var_34 Then
      If var_34 <> 1 Then GoTo loc_1137DD1E
      esi*2 = esi*2 - ecx+00000014h
      If esi*2 >= 0 Then
        var_eax = Err.Raise
      End If
      GoTo loc_1137DD29
  loc_1137DD1E:
  loc_1137DD1E:
  loc_1137DD29:
    If var_34 Then
      If var_34 <> 1 Then GoTo loc_1137DD4A
      var_18 = var_18 - ecx+00000014h
      If var_18 < 0 Then GoTo loc_1137DD55
      var_eax = Err.Raise
      GoTo loc_1137DD52
  loc_1137DD4A:
  loc_1137DD4A:
  loc_1137DD52:
  loc_1137DD55:
    If var_34 Then
      If var_34 <> 1 Then GoTo loc_1137DD8C
      var_18 = var_18 - ecx+00000014h
      If var_18 >= 0 Then
        var_eax = Err.Raise
      End If
      GoTo loc_1137DD95
  loc_1137DD8C:
  loc_1137DD8C:
  loc_1137DD95:
    If edx+eax < 16 Then
      If var_40 Then
        If var_40 <> 1 Then GoTo loc_1137DDD6
        var_18 = var_18 - ecx+00000014h
        If var_18 >= 0 Then
          var_eax = Err.Raise
        End If
        GoTo loc_1137DDDF
  loc_1137DDD6:
  loc_1137DDD6:
  loc_1137DDDF:
      ecx+0000000Ch = ecx+0000000Ch + Err.Raise
      var_70 = ecx+0000000Ch
      var_3C = var_3C & var_1100A724 & Hex$(ecx+0000000Ch)
      GoTo loc_1137DECB
    End If
    If var_40 Then
      If var_40 <> 1 Then GoTo loc_1137DE7A
      var_18 = var_18 - ecx+00000014h
      If var_18 >= 0 Then
        var_eax = Err.Raise
      End If
      GoTo loc_1137DE83
  loc_1137DE7A:
  loc_1137DE7A:
  loc_1137DE83:
    ecx+0000000Ch = ecx+0000000Ch + Err.Raise
    var_70 = ecx+0000000Ch
    var_3C = var_3C & Hex$(ecx+0000000Ch)
  loc_1137DECB:
    00000001h = 00000001h + var_18
    GoTo loc_1137DC6F
  End If
  GoTo loc_1137DF2B
  If var_4 Then
  End If
  Exit Sub
  loc_1137DF2B:
  Exit Sub
End Sub

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有没有高手可以帮忙呢?如果需要,有酬谢。
2016-10-28 12:54
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请高手帮忙,有酬谢,价格可谈!
2016-10-28 14:38
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
路过!哈哈
2016-10-28 18:29
0
雪    币: 652
活跃值: (1212)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
VB 又没有复杂的运算,都是基本运算,不向C 一个 >> 就移位了。可能你看到最后是一个简单的功能而已
2016-10-28 19:55
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你好,你可以帮忙吗?有酬谢。
2016-10-31 10:22
0
雪    币: 652
活跃值: (1212)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
你OD调一下,应该不难!
2016-10-31 15:22
0
游客
登录 | 注册 方可回帖
返回