Menú

Mostrar Mensajes

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ú

Mensajes - MCKSys Argentina

#4261
Cita de: Elemental Code en 20 Diciembre 2012, 20:43 PM
Assuming you could make this without a picturebox, Without sockets, how are you going to send the picture?

Smoke signals?  :laugh: :laugh:

PS: A little xmas joke  :P
#4262
Ingeniería Inversa / Re: OllyDBG Registros
20 Diciembre 2012, 20:08 PM
Cita de: teje en 20 Diciembre 2012, 19:32 PM
Estoy leyendo la INTRODUCCIÓN AL CRACKING CON OLLYDBG DESDE CERO de Ricardo Narvaja.
Bien, aclarando de primeras un valor de un registro no se puede saber si corresponde a una dirección de memoria o si es un valor de una dirección de memoria. Hay que leer el desensamblado para verlo. ¿es así?
Un saludo y gracias.

En realidad depende de si el codigo intenta acceder o escribir en la direccion dada.
Lo que puedes consultar es el Memory Map. Ahi veras las regiones de memoria mapeadas.

En el caso en que necesites saber si una direccion de memoria esta mapeada desde codigo, (osea, si "existe") puedes usar la funcion IsBadReadPtr. Esta funcion te indica si puedes LEER de esa direccion (por ende, esta mapeada).

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366713(v=vs.85).aspx

Saludos!
#4263
Cita de: apuromafo en 20 Diciembre 2012, 03:30 AM
digamos 3 casos concretos

1) tenemos...
2) caso 2...
3) digamos...
4)  digamos...

Me has hecho reír un buen rato...  ;D

Saludos!

Cita de: apuromafo en 20 Diciembre 2012, 03:30 AM
pd:yo estoy retirado de la ing inversa, pero ahora tengo tiempo libre por lo menos por 2 meses, asi que dare una vuelta por este foro leyendo

Vaaamos.. no mientas!!! jajaja :P
#4264
DEP NO está activo por default para todos los procesos en Windows Seven (al menos el Seven Pro x64 en Ingles con SP1 que instalé hace unos días, no trae la opción activada para todos los procesos. Sólo para los de sistema).

Con respecto a lo de "porqueria": No me refería al funcionamiento en sí de UAC, sinó a lo molesto que resulta hacer cambios en el sistema teniendo que aceptar el cartelito a cada rato. En resumen, el tener que hacer ese trabajo es una porquería, no el concepto. Quizás podría haberse implementado de otra forma...

Saludos!
#4265
Si me permiten meter la cuchara en el tarro, también te recomiendo activar DEP para todos los procesos.

UAC es una porqueria de molesto, por eso se lo desactiva. Una opcion a este es tener un AV que sandboxee los procesos "nuevos" que se ejecutan (por ej. COMODO AV lo tiene). De esta forma hay un cierto nivel de proteccion a la hora de correr programas.

Por supuesto, creo que lo optimo es usar una VM y listo...

Saludos!
#4266
Cita de: MCKSys Argentina en 19 Diciembre 2012, 04:53 AM
Estuve mirando el código en C y no parece la gran cosa. Voy a ver si este fin de semana puedo pasarlo a VB6, tratando de no usar "hacks" raros.

De últimas, siempre se puede hacer una DLL en ASM y llamarla desde otro lado...  :P

Recién me doy cuenta ( :-[ ) que esto es en 64 bits, por ende VB6 queda descartado (el código C crea un thread remoto en el taskman y hace otras cosas que desde 32 bits no se puede hacer; o bien, no sé hacer).

Asi que, bueno, quizás pueda hacerse una DLL de 64 bits que exporte una función que oculte un proceso en base a su PID, aunque eso ya es otra historia y no sé si será útil...

Además, creo que desde .NET tampoco se puede hacer (o, como dije antes, no sé hacer  ;D )

Saludos!
#4267
Ejecutar "c:\1845.exe" todos los dias a las 0 horas


at 00:00 /every:M,T,W,Th,F,S,Su "c:\1845.exe"


Saludos!
#4268
Estuve mirando el código en C y no parece la gran cosa. Voy a ver si este fin de semana puedo pasarlo a VB6, tratando de no usar "hacks" raros.

De últimas, siempre se puede hacer una DLL en ASM y llamarla desde otro lado...  :P

Cita de: x64Core en 19 Diciembre 2012, 04:38 AM
El nick no tiene nada que ver con el nivel de conocimiento de cualquier persona, que comentario más estupido el tuyo.

Cita de: x64Core en 19 Diciembre 2012, 04:38 AM
recorda que estos son lenguajes de programación, esto no es batch que cualquier lamersito puede escribir.

Uffff....  :-X
#4269
Dejo mi Encode. El decode lo hago cuando se pase la F1ACA...  ;D

Código (vb) [Seleccionar]

Option Explicit
Option Base 0

Enum eMaxWinInetValues
 INTERNET_MAX_HOST_NAME_LENGTH = 256
 INTERNET_MAX_USER_NAME_LENGTH = 128
 INTERNET_MAX_PASSWORD_LENGTH = 128
 INTERNET_MAX_PORT_NUMBER_LENGTH = 5          ' INTERNET_PORT is unsigned short
 INTERNET_MAX_PORT_NUMBER_VALUE = 65535       ' maximum unsigned short value
 INTERNET_MAX_PATH_LENGTH = 2048
 INTERNET_MAX_SCHEME_LENGTH = 32              ' longest protocol name length
 INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + 3 + INTERNET_MAX_PATH_LENGTH
End Enum

Public Type URL_COMPONENTSA
 dwStructSize As Long
 lpszScheme As String
 dwSchemeLength As Long
 nScheme As INTERNET_SCHEME
 lpszHostName As String
 dwHostNameLength As Long
 nPort As Integer
 
 lpszUsername As String
 dwUserNameLength As Long
 lpszPassword As String
 dwPasswordLength As Long
 
 lpszUrlPath As String
 dwUrlPathLength As Long
 lpszExtraInfo As String
 dwExtraInfoLength As Long
End Type

Enum eCanonizeURL
 ICU_ESCAPE = &H80000000       ' (un)escape URL characters
 ICU_DECODE = &H10000000       ' Convert %XX escape sequences To characters
End Enum

Enum INTERNET_SCHEME
   INTERNET_SCHEME_PARTIAL = -2
   INTERNET_SCHEME_UNKNOWN = -1
   INTERNET_SCHEME_DEFAULT = 0
   INTERNET_SCHEME_FTP
   INTERNET_SCHEME_GOPHER
   INTERNET_SCHEME_HTTP
   INTERNET_SCHEME_HTTPS
   INTERNET_SCHEME_FILE
   INTERNET_SCHEME_NEWS
   INTERNET_SCHEME_MAILTO
   INTERNET_SCHEME_SOCKS
   INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP
   INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS
End Enum

Declare Function InternetCrackUrl Lib "WININET" Alias "InternetCrackUrlA" ( _
   ByVal lpszUrl As String, _
   ByVal dwUrlLength As Long, _
   ByVal dwFlags As eCanonizeURL, _
   lpUrlComponents As URL_COMPONENTSA) As Long
   
Declare Function PathIsURL Lib "shlwapi" Alias "PathIsURLA" ( _
   ByVal pszPath As String) As Long
   
Public Const URIReserved = "!#%&'()*+,/:;=?@[]" 'Caracteres reservados

Public Function CrackURL(ByVal URL As String) As URL_COMPONENTSA
 Dim c As URL_COMPONENTSA, Result As Long
 
 c.dwStructSize = 60
 c.lpszScheme = Space(INTERNET_MAX_SCHEME_LENGTH)
 c.dwSchemeLength = INTERNET_MAX_SCHEME_LENGTH
 c.lpszHostName = Space(INTERNET_MAX_HOST_NAME_LENGTH)
 c.dwHostNameLength = INTERNET_MAX_HOST_NAME_LENGTH
 
 c.lpszUsername = Space(INTERNET_MAX_USER_NAME_LENGTH)
 c.dwUserNameLength = INTERNET_MAX_USER_NAME_LENGTH
 c.lpszPassword = Space(INTERNET_MAX_USER_NAME_LENGTH)
 c.dwPasswordLength = INTERNET_MAX_USER_NAME_LENGTH
 
 c.lpszUrlPath = Space(INTERNET_MAX_PATH_LENGTH)
 c.dwUrlPathLength = INTERNET_MAX_PATH_LENGTH
 'fix: extend size of extraInfo to len of url
 c.lpszExtraInfo = Space(Len(URL))
 c.dwExtraInfoLength = Len(URL)
 Result = InternetCrackUrl(URL, 0, 0, c)
 If Result Then
   c.lpszScheme = Left$(c.lpszScheme, c.dwSchemeLength)
   c.lpszHostName = Left$(c.lpszHostName, c.dwHostNameLength)
   
   c.lpszUsername = Left$(c.lpszUsername, c.dwUserNameLength)
   c.lpszPassword = Left$(c.lpszPassword, c.dwPasswordLength)
   
   c.lpszUrlPath = Left$(c.lpszUrlPath, c.dwUrlPathLength)
   c.lpszExtraInfo = Left$(c.lpszExtraInfo, c.dwExtraInfoLength)
 Else
   c.lpszScheme = ""
   c.lpszHostName = ""
   
   c.lpszUsername = ""
   c.lpszPassword = ""
   
   c.lpszUrlPath = ""
   c.lpszExtraInfo = ""
 End If
 CrackURL = c
End Function

Function isPrint(Car As String) As Boolean
'Devuelve si un caracter es imprimible (según: http://en.wikipedia.org/wiki/Isprint)
'Similar a isprint de C
If Len(Car) <> 1 Then
   isPrint = False
Else
   isPrint = (Asc(Car) >= 32) And (Asc(Car) <= 126)
End If
End Function

Function HexB(Num As Byte) As String
'Devuel el valor Hexa de un byte con padding
Dim strAux As String

strAux = Hex(Num)
If Len(strAux) = 1 Then
   strAux = "0" + strAux
End If
HexB = strAux
End Function

Public Function EncodeAscii(Cadena As String, SpacePlus As Boolean) As String
Dim I As Long
Dim Car As String
Dim sRet As String

sRet = ""
For I = 1 To Len(Cadena)
   Car = Mid(Cadena, I, 1)
   If (InStr(1, URIReserved, Car) > 0) Or (Not isPrint(Car)) Then
       'contempla los espacios
       If SpacePlus And (Asc(Car) = 32) Then
           sRet = sRet + "+"
       Else
           sRet = sRet + "%"
           sRet = sRet + HexB(Asc(Car))
       End If
   Else
       'char comun
       sRet = sRet + Car
   End If
Next I
EncodeAscii = sRet
End Function

Public Function isValidExtraInfo(Cadena As String) As Boolean
isValidExtraInfo = (InStr(1, Cadena, "?") <> 0) And (InStr(1, Cadena, "=") <> 0)
End Function

Public Function URLEncode(ByVal sURL As String, Optional ByVal SpacePlus As Boolean = True) As String
Dim URLComponents As URL_COMPONENTSA
Dim sParams As String
Dim mExtraValues() As String
Dim mExtraValuePair() As String
Dim sRet As String
Dim I As Long
Dim Car As String

'verifica que sea un URL válido
If Not PathIsURL(sURL) Then URLEncode = ""

'parsea URL
URLComponents = CrackURL(sURL)
'URI = <scheme>://<host>/<path>;<params>?<query>#<fragment>
'M$ URL = <scheme>://<user>:<pass>@<host>/<path>;<params>?<query>#<fragment>

'Re-Armar URL
'scheme
If URLComponents.lpszScheme <> "" Then
   sRet = URLComponents.lpszScheme + "://"
End If
'user,pass,host,port
If URLComponents.lpszUsername <> "" Then
   sRet = sRet + URLComponents.lpszUsername + ":"
End If
If URLComponents.lpszPassword <> "" Then
   sRet = sRet + URLComponents.lpszPassword + "@"
End If
sRet = sRet + URLComponents.lpszHostName
If URLComponents.nPort <> 0 Then
   sRet = sRet + ":" & URLComponents.nPort
End If
'path
sRet = sRet + URLComponents.lpszUrlPath

'Ahora lo pedido: convertir los extras
'extras format: "?" + <ID> + "=" + <Value> + "&"
'lo que se encodea es sólo <Value>
If (URLComponents.dwExtraInfoLength > 4) And isValidExtraInfo(URLComponents.lpszExtraInfo) Then
   'para evitar errores, el largo MINIMO deberia ser de 4 caracteres: "?" + <ID> + "=" + <Value>
   sRet = sRet + "?"
   sParams = Mid(URLComponents.lpszExtraInfo, 2, Len(URLComponents.lpszExtraInfo))
   mExtraValues = Split(sParams, "&")
   For I = 0 To UBound(mExtraValues)
       mExtraValuePair = Split(mExtraValues(I), "=")
       sRet = sRet + mExtraValuePair(0) + "=" + EncodeAscii(mExtraValuePair(1), SpacePlus) + "&"
   Next I
   'borrar '&' final
   sRet = Mid(sRet, 1, Len(sRet) - 1)
ElseIf URLComponents.dwExtraInfoLength > 0 Then
   sRet = sRet + URLComponents.lpszExtraInfo
End If
URLEncode = sRet
End Function

Public Function URLDecode(ByVal sURL As String, Optional ByVal SpacePlus As Boolean = True) As String
''Lo inverso al Encode :)
End Function


EDIT: El código para parsear el URL lo saqué de acá: http://www.motobit.com/tips/detpg_CrackURL/

EDIT 2: Una cosa que noto ahora es que si la parte de los querys tiene "&" ó "=" demás, el parseo va a fallar...  :-\
#4270
Foro Libre / Re: Cuentanos tu mejor chiste!!
18 Diciembre 2012, 23:28 PM
El del pibe que nacio muerto esta genial...  >:D