Visitante
Ingresar
Registrarse
Underc0de - Hacking y seguridad informática
Menu
Inicio
Website
Blog
Buscar
Calendario
Ingresar
Registrarse
Underc0de - Hacking y seguridad informática
»
Programación General
»
C / C++
»
Códigos Fuentes
[SCR] GetProcAddres con hash FNV
Imprimir
Páginas: [
1
]
Ir Abajo
« anterior
próximo »
[SCR] GetProcAddres con hash FNV
2 Respuestas
2942 Vistas
0 Usuarios y 1 Visitante están viendo este tema.
Arkangel
Underc0der
Mensajes: 15
Actividad:
0%
Reputación 0
[SCR] GetProcAddres con hash FNV
en: Junio 17, 2013, 08:25:40 am
Aqui les traigo esta funcion que ahorra espacio cuando usas muchas importaciones y a parte, sirve para ocultar lo que importas al no quedar rastro visible de las cadenas de las apis
GetProcAddressByHash.c
Código: C++
FARPROC WINAPI GetProcAddressByHash
(
HINSTANCE hModule,ulong hash
)
{
register
PIMAGE_NT_HEADERS PE
;
register
FARPROC proc
=
null
;
register
PIMAGE_EXPORT_DIRECTORY ExpDir
=
null
;
register
char
**
ExportNames
=
null
;
//Comprovamos la marca de DOS
if
(
*
(
(
ushort
*
)
hModule
)
==
IMAGE_DOS_SIGNATURE
)
{
//localizamos la cabecera PE
PE
=
(
PIMAGE_NT_HEADERS
)
(
(
(
IMAGE_DOS_HEADER
*
)
hModule
)
-
>
e_lfanew
+
(
ulong
)
hModule
)
;
//Compruebo la firma de PE y que halla tabla de importaciones
if
(
PE
-
>
Signature
==
IMAGE_NT_SIGNATURE
&&
PE
-
>
OptionalHeader.
DataDirectory
[
IMAGE_DIRECTORY_ENTRY_EXPORT
]
.
Size
)
{
//Localizo el directorio de exportaciones
ExpDir
=
(
PIMAGE_EXPORT_DIRECTORY
)
(
PE
-
>
OptionalHeader.
DataDirectory
[
IMAGE_DIRECTORY_ENTRY_EXPORT
]
.
VirtualAddress
+
(
ulong
)
hModule
)
;
#ifdef DEBUG
DebugPrintf
(
"GPA"
,
"ExpDir = %p,EXPORT_DIRECTORY = %x"
,ExpDir,PE
-
>
OptionalHeader.
DataDirectory
[
IMAGE_DIRECTORY_ENTRY_EXPORT
]
.
VirtualAddress
)
;
#endif
//Localizo los nombres de simbolos exportados y busco la funcion
ExportNames
=
(
char
**
)
(
ExpDir
-
>
AddressOfNames
+
(
ulong
)
hModule
)
;
register
int
i
;
for
(
i
=
0
;
ExportNames
[
i
]
;
i
++
)
{
//Comparo los hash para buscar la funcion
if
(
fnv32
(
ExportNames
[
i
]
+
(
ulong
)
hModule
)
==
hash
)
{
ulong
*
funtionRVAs
=
(
ulong
*
)
(
ExpDir
-
>
AddressOfFunctions
+
(
ulong
)
hModule
)
;
ushort
*
ordinalRVAs
=
(
ushort
*
)
(
ExpDir
-
>
AddressOfNameOrdinals
+
(
ulong
)
hModule
)
;
//Calculamos la direccion de la funcion
proc
=
(
FARPROC
)
(
funtionRVAs
[
ordinalRVAs
[
i
]
]
+
(
ulong
)
hModule
)
;
break
;
}
}
}
}
return
proc
;
}
fnv.c
Código: C++
#define FNV_PRIME_32 16777619
#define FNV_OFFSET_32 2166136261U
ulong fnv32
(
register
const
char
*
s
)
{
register
ulong hash
=
FNV_OFFSET_32
;
while
(
*
s
)
hash
=
(
hash
^
(
*
(
s
++
)
)
)
*
FNV_PRIME_32
;
return
hash
;
}
«
Última modificación: Febrero 08, 2014, 05:37:31 pm por Expermicid
»
En línea
Karcrack
Underc0der
Mensajes: 87
Actividad:
0%
Reputación 0
Se siente observado ¬¬'
Re:[SCR]GetProcAddres con hash FNV
en: Junio 17, 2013, 12:34:03 pm
Buen code sólo falta aclarar que no funcionaría ni con ordinales ni con forwarded imports.
En línea
I code for
$$$
.
(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer
Arkangel
Underc0der
Mensajes: 15
Actividad:
0%
Reputación 0
Re:[SCR]GetProcAddres con hash FNV
en: Junio 18, 2013, 08:02:27 am
lo de los ordinales no hay solucion, pero lo de los forward se podria solucionar, solo que complicaria la funcion un poco
Saludos
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
Sponsors
Zerpens
Kali-Linux
Club Hacker
ANTRAX-LABS
Ingresar
×
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión