코드엔진 Basic RCE L

코드엔진 Basic RCE L03 번외풀이2

Lamed_Dhhd 2023. 1. 31. 22:55
반응형

2023-02-01에 쓸 예정

CodeEngn Challenge 링크 https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com

Basic RCE L03
비주얼베이직에서 스트링 비교함수 이름은?


Author: Blaster99 [DCD]
File Password: codeengn

동영상: https://www.youtube.com/watch?v=xfACtfyb8ho  

상세설명

사실은 완전히 재현하는데는 실패했다. 하지만 그 과정을 남기기 위해 글을 쓴다.

CodeEngn #3.zip
0.01MB

개발 도구인 Visual Basic 5.0을 설치하자 바이러스는 모르겠으니 개인의 선택에 맡기겠다.

https://winworldpc.com/product/microsoft-visual-bas/50

 

Microsoft Visual Basic 5.0

First released in 1991, Microsoft Visual Basic was a programming environment where one could build an application by visually creating the user interface first, and then adding code. In contrast, even the smallest Visual Basic basic programs could take rea

winworldpc.com

 

English로 다운받은 후 설치를 한다.(영상참고)

CD Key는 0401-3960953입니다.

설치후 Standard EXE를 열기한다.

이상태로 저장한다.

4개의 파일중 frm을 메모장으로 연다.

기본 form 코드

VB Decompiler로 Form 코드를 추출해보자

Form1을 클릭 후 Form을 클릭하면 코드가 나온다.
VERSION 5.00
Begin VB.Form Form1
  Caption = "DCD VB5-CrackMe 1.0"
  ScaleMode = 1
  AutoRedraw = False
  FontTransparent = True
  BorderStyle = 1 'Fixed Single
  Icon = "Form1.frx":0000
  LinkTopic = "Form1"
  MaxButton = 0   'False
  MinButton = 0   'False
  ClientLeft = 1140
  ClientTop = 1800
  ClientWidth = 3735
  ClientHeight = 2040
  PaletteMode = 1
  Begin VB.CommandButton Command2
    Caption = "&Exit"
    Left = 1680
    Top = 1320
    Width = 1215
    Height = 495
    TabIndex = 2
  End
  Begin VB.CommandButton Command1
    Caption = "&Registrieren"
    Left = 360
    Top = 1320
    Width = 1215
    Height = 495
    TabIndex = 1
  End
  Begin VB.TextBox Text1
    Left = 1320
    Top = 840
    Width = 1815
    Height = 285
    TabIndex = 0
    MaxLength = 10
  End
  Begin VB.Label Label3
    Caption = "http://dcd.mainpage.net"
    ForeColor = &HC00000&
    Left = 600
    Top = 480
    Width = 2100
    Height = 195
    TabIndex = 5
    AutoSize = -1  'True
    BeginProperty Font
      Name = "MS Sans Serif"
      Size = 8.25
      Charset = 0
      Weight = 700
      Underline = 0 'False
      Italic = 0 'False
      Strikethrough = 0 'False
    EndProperty
  End
  Begin VB.Label Label2
    Caption = "Digital Cracker Domain"
    ForeColor = &HFF0000&
    Left = 120
    Top = 120
    Width = 3450
    Height = 360
    TabIndex = 4
    AutoSize = -1  'True
    BackStyle = 0 'Transparent
    BeginProperty Font
      Name = "Arial"
      Size = 15.75
      Charset = 0
      Weight = 700
      Underline = 0 'False
      Italic = 0 'False
      Strikethrough = 0 'False
    EndProperty
  End
  Begin VB.Label Label1
    Caption = "Regcode :"
    Left = 360
    Top = 840
    Width = 900
    Height = 195
    TabIndex = 3
    AutoSize = -1  'True
    BeginProperty Font
      Name = "MS Sans Serif"
      Size = 8.25
      Charset = 0
      Weight = 700
      Underline = 0 'False
      Italic = 0 'False
      Strikethrough = 0 'False
    EndProperty
  End
  Begin VB.Menu mnuprog
    Caption = "&Programm"
    Begin VB.Menu mnuexit
      Caption = "&Exit"
    End
  End
  Begin VB.Menu mnuabout
    Caption = "&Über"
  End
End

Attribute VB_Name = "Form1"


위에 문자를 복사 붙여넣어서 저장하고 frm을 더블클릭하여 다시 VB 5.0 개발 도구를 연다.

성공적으로 Form이 복사되었다.

오른쪽에 View Code를 코드를 복사 붙여넣는다.

코드는 Code부분에 있는 것들을 클릭하여 복사 붙여넣기 후 약간의 수정을 해주면 된다.

처리전

Private Sub Command1_Click() '402814
  Dim var_5C As Variant
  loc_004028E3: If (Form1.Text1.Text = "2G83G35Hs2") + 1 Then
  loc_004029CF:   If (MsgBox("Glückwunsch !", CLng(CLng(49)), "Glückwunsch !", 10, 10) = 1) Then GoTo loc_00402B47
  loc_004029D5:   End
  loc_004029DC: Else
  loc_004029E7: End If
  loc_004029EA: call var_8014 = var_C4(Me, Me, 0, 0, 0)
  loc_004029F5: Set var_5C = var_C4(Me, Me, 0, 0, 0)
  loc_00402A01: var_B0 = var_5C
  loc_00402A5A: If (var_5C.MousePointer = "2G83G35Hs2") Then
  loc_00402B38:   var_8024 = (MsgBox("Error ! Das Passwort ist falsch !", CLng(CLng(22)), "PASSWORT FALSCH !", 10, 10) = 1)
  loc_00402B40:   If var_8024 = 0 Then
  loc_00402B42:     End
  loc_00402B47:   End If
  loc_00402B47: End If
  loc_00402B50: GoTo loc_00402B75
  loc_00402B74: Exit Sub
  loc_00402B75: ' Referenced from: 00402B50
  loc_00402B90: GoTo loc_undef 'Ignore this '__vbaFreeVar
End Sub

처리후

Private Sub Command1_Click() '402814
  Dim var_5C As Variant
   If (Form1.Text1.Text = "2G83G35Hs2") + 1 Then
     If (MsgBox("Glückwunsch !", CLng(CLng(49)), "Glückwunsch !", 10, 10) = 1) Then GoTo loc_00402B47
     End
   Else
   End If
   '무슨 용도인지 도저히 모르겠다... 전문가가 와서 만들어주길...
   'call var_8014 = var_C4(Me, Me, 0, 0, 0)
   'Set var_5C = var_C4(Me, Me, 0, 0, 0)
   var_B0 = var_5C
   If (var_5C.MousePointer = "2G83G35Hs2") Then
     var_8024 = (MsgBox("Error ! Das Passwort ist falsch !", CLng(CLng(22)), "PASSWORT FALSCH !", 10, 10) = 1)
     If var_8024 = 0 Then
       End
     End If
   End If
   loc_00402B47:
   Exit Sub
End Sub

이런식으로 하면서 만들면된다.

반응형