Hola amigos aquí les dejo el código del crypter que use en el vídeo Descifrar Archivo VBScript Ofuscado Usando X64DBG espero sea de su agrado, así como el script de x64dbg.
En el vídeo no use breakpoint ni puntos de interrupción para que el script de vbs ofuscado se detuviera en la librería kernelbase.dll, tampoco esta configurado solo tengo las configuraciones por defecto.
otra cosa cuando se detiene en la librería kernelbase.dll el código descifrado se muestra en la dirección EAX+358 en hexadecimal y el peso del archivo esta en la direccion EAX+35C en hexadecimal, por ultimo cuando se detiene en dicha librería los registros EAX y ESP tienen el mismo valor.
===Codigo Del Crypter.vbs===option explicit
Randomize
dim op,o,s,oARG,oFSO,File
Set oARG=wscript.Arguments
Set oFSO=createObject("Scripting.FileSystemObject")
If oARG.Count=0 Then WScript.Quit
For Each File In oARG
Set s=oFSO.OpenTextFile(File,1)
Set o=oFSO.CreateTextFile("Encrypted___" & File,True)
op=inputbox("Precione un numero del 1 al 3 para el legir el tipo de cifrado","Tipo de cifrado")
select case op
case 1
o.writeline "Execute(" & read(s.readall,1) & ")"
case 2
o.writeline "code=" & chr(34) & read(s.readall,2) & chr(34)
o.writeline "c=split(code," & chr(34)& "==" & chr(34) & ")"
o.writeline "for x=0 to ubound(c)"
o.writeline " command=command & chr(c(x))"
o.writeline "next"
o.writeline "Execute command"
case 3
o.writeline "code=" & chr(34) & read(s.readall,3) & chr(34)
o.writeline "for x=1 to len(code) step 2"
o.writeline " command=command & chr(cint(" & chr(34) & chr(38) & chr(72) & chr(34) & " & (mid(code,x,2))))"
o.writeline "next"
o.writeline "Execute command"
case else
msgbox "Adios"
wscript.quit
end select
msgbox "Archivo " & File & " encriptado con exito"
Next
o.close
s.close
Function read(x,y)
dim i,e,d
for i=1 To Len(x)
select case y
case 1
e=e & "chr("& f(asc(mid(x,i,1)))& ") &"
case 2
e=e & asc(mid(x,i,1)) & "=="
case 3
d=hex(asc(mid(x,i,1)))
if len(d)=1 then
e=e & "0" & d
else
e=e & d
end if
end select
next
if y<>3 then
read=Left(e,Len(e)-2)
else
read=e
end if
End Function
Function f(n)
dim m,t,u
m=int(rnd*99)+1
If n mod m=0 Then
t=(n/m)& "*"& m
Else
u=int(rnd*3)
If u=0 Then t=(n+m)& "-"& m
If u=1 Then t=(n-m)& "+"& m
If u=2 Then t=(n*m)& "/"& m
End If
f=t
End Function
===Codigo Del Script De X64dbg===run // Este comando ejecuta el programa
mov eax,[esp+358] // Este toma el valor que se encuentra en la dirección esp+358 y lo pasa a EAX
mov ebx,[esp+35c] // Este toma el valor que se encuentra en la dirección esp+35C y lo pasa a EBX
savedata C:\Users\Flamer\Desktop\dump_script.txt,eax,ebx
// toma el valor que se encuentra en la dirección EAX y con el tamaño en bytes que posee EBX y genera un archivo en el escritorio llamado dump_script.txt
msg "el Script a sido extraido con exito, saludos" // muestra un mensaje
ret // termina el script
Link del vídeo donde se muestra como usarse:
https://www.youtube.com/watch?v=NdMUQwZ3NII&t=3sSaludos Flamer y hasta la próxima.....