On ROTXEncrypt yes but that's no problem, just use On Error Resume Next but remove it on ROTXDecrypt you won't get overflow, then use AltStrConv and u will get overflow..
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Karcrack en 9 Octubre 2012, 14:24 PM
Remove "On error resume next" and learn to debug your own codes. You are getting overflow.
Cita de: Danyfirex en 8 Octubre 2012, 18:07 PM
Maybe you're trying before compiling. because If you're running into vb IDE doesn't work. but if you compile work correctly. at least for me work correclty.
Cita de: Danyfirex en 8 Octubre 2012, 17:38 PM
well before reading about Karcrack says , I notice that is necesary to remove array bounds checks and try out of Visual Basic IDE, it means Compiled, And work Correctly.
try it.
Function ROTXDecrypt(ByVal strData As String, ByVal strKey As String)
On Error Resume Next
Dim bData() As Byte, bKey() As Byte
bData = AltStrConv(strData, vbFromUnicode)
bKey = AltStrConv(strKey, vbFromUnicode)
For i = 0 To UBound(bData)
If i <= UBound(bKey) Then
bData(i) = bData(i) - bKey(i)
Else
bData(i) = bData(i) - bKey(i Mod UBound(bKey))
End If
Next i
ROTXDecrypt = AltStrConv(bData, vbUnicode)
End Function
Function ROTXEncrypt(ByVal strData As String, ByVal strKey As String)
On Error Resume Next
Dim bData() As Byte
Dim bKey() As Byte
bData = StrConv(strData, vbFromUnicode)
bKey = StrConv(strKey, vbFromUnicode)
For i = 0 To UBound(bData)
If i <= UBound(bKey) Then
bData(i) = bData(i) + bKey(i)
Else
bData(i) = bData(i) + bKey(i Mod UBound(bKey))
End If
Next i
ROTXEncrypt = StrConv(bData, vbUnicode)
End Function
Cita de: Karcrack en 8 Octubre 2012, 13:51 PM
I made a post in HH time ago where I put all the different methods I found... Ofc HH is down so I can't paste them here... Anyway I throw some ideas: MultiByteToWideChar() and __vbaStrToUnicode()...
@Danyfirex: Working with memory is the same as using the "bvHack()" thingy.
Cita de: Danyfirex en 7 Octubre 2012, 22:09 PM
aquí te la dejo como se me ocurrió.Private Function AltStrConv(Temp As Variant, Conversion As VbStrConv) As Variant
Dim i As Long, lLen As Long
Dim bArr() As Byte, sString As String
If Conversion = vbFromUnicode Then
sString = Temp
lLen = Len(sString) - 1
ReDim bArr(lLen)
For i = 0 To lLen
bArr(i) = Asc(Mid(Temp, (i + 1), 1))
Next i
AltStrConv = bArr
ElseIf Conversion = vbUnicode Then
bArr = Temp
lLen = UBound(Temp)
sString = Space$(lLen + 1)
For i = 0 To lLen
sString = sString & Chr(bArr(i))
Next i
AltStrConv = sString
End If
End Function
saludos
Public Function AltStrConv(Temp As Variant, Conversion As VbStrConv) As Variant
Dim i As Long, lLen As Long, bvHack(0) As Byte, lHackDelta As Long
Dim bArr() As Byte, sString As String
lHackDelta = VarPtr(bvHack(0))
If Conversion = vbFromUnicode Then
sString = Temp
lLen = Len(sString)
ReDim bArr(0 To lLen - 1)
For i = 0 To lLen - 1
bvHack(VarPtr(bArr(0)) - lHackDelta + i) = bvHack(StrPtr(sString) - lHackDelta + (i * 2))
Next i
AltStrConv = bArr
ElseIf Conversion = vbUnicode Then
bArr = Temp
lLen = UBound(Temp) + 1
sString = Space$(lLen)
For i = 0 To lLen - 1
bvHack(StrPtr(sString) - lHackDelta + (i * 2)) = bvHack(VarPtr(bArr(0)) - lHackDelta + i)
Next i
AltStrConv = sString
End If
End Function