Jump to content
View in the app

A better way to browse. Learn more.

Tuts 4 You

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

ArmDot 2022.1.0 [Maximum Preset Including VM]

Your goal is to devirtualize and unpack the file completely;

  • No partial unpack,
  • No patching.

File Information

Submitter BlackHat

Submitted 01/16/2022

Category UnPackMe (.NET)

View File

ArmDot 2022.1.0 [Maximum Preset Including VM]

Solved by BataBo

Go to solution
  • Solution

Compared to other vms, ArmDot is extremely simple, and one of the easiest ones to unpack I've ever seen.

The virtualised code is stored within structs with initial value. Every method has it's own struct containing virtualised code and IntPtr[] with pointers to all methods that will be called within the method.

Now we need to clean up a bit one thing armdot does is this "else if (5 >= b) { if (5 <= b)" which can be simplified to "if(b == 5)" now within methods we have code blocks associated with certain number in the case above 5.

With this we can arrange the code the way it's supposed to be.

Then we have to figure out what code block corresponds to what op code, interesting thing they've done for calls is that every method has it's unique opcode.

Now that that is arranged convert calli to call example of calli looks like this " calli(BlackHatAnonymous.BlackHat(), InProcessServerExecutionEngineException.GetInArgEnumInstallerDeploymentProperties[*(int*)(ptr + num3)]); " if we look at the value to which pointer points to we can see this 0500000002... "05" is the code of the code block and "00000002" is the index of method in GetInArgEnumInstallerDeploymentProperties which is of type IntPtr[];

Now devirtualise.

The only thing left to do now is a bit of cleaning. Remove proxy methods, remove all the vm stuff, remove the resources and boom unpacked.

In my opinion, based on the unpack me above, armdot is very easy to unpack and is definitely not worth 300$.

 

BH_Sample_2022.1_p_cleaned.exe

Unpacked.

Level: 3/10

ArmDot virtualization same as CIL, easy but need time to make a full tool for that.

Please report if you find any problem in my task.

image.png.d1fa09706cdb2abff2a76cf71427eb54.png

 

BH_Sample_2022.1_Pro.NoArmDot.rar

Create an account or sign in to comment

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.