Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por Reasen Ver Mensaje
Pues quisiera editar unas cosillas... Pero vale.
No sabía yo de esa restricción de editar un post luego de 30 minutos... de todas formas puedes añadir más posts. Y, si realmente quieres editar el primer post, por favor, añade un nuevo post a este hilo con lo que quisieras que estuviese en primer lugar... y yo mismo lo pondré ahí.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 19-11-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Poder: 11
Reasen Va por buen camino
Cita:
Empezado por dec Ver Mensaje
No sabía yo de esa restricción de editar un post luego de 30 minutos... de todas formas puedes añadir más posts. Y, si realmente quieres editar el primer post, por favor, añade un nuevo post a este hilo con lo que quisieras que estuviese en primer lugar... y yo mismo lo pondré ahí.
Quería añadir un ejemplo para evitar inyecciones de DLL a una aplicación Delphi con un sencillo hook y sin usar condiciones.

Me vendría de perlas tener el botón de editar solamente en este post principal...

Código Delphi [-]
program Project2;


{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

procedure hook(target, newfunc: pointer);
var
  jmpto: dword;
  OldProtect: Cardinal; 
begin
  jmpto := dword(newfunc) - dword(target) - 5;
  VirtualProtect(target, 5, PAGE_EXECUTE_READWRITE, @OldProtect);
  pbyte(target)^ := $e9;
  pdword(dword(target) + 1)^ := jmpto;
end;

procedure myLdrLoadDll(PathToFile: PAnsiChar; Flags: variant; ModuleFileName: PAnsiChar; var ModuleHandle: THandle);
begin
  MessageBox(0, 'DLL Detectada!!', 'Nope!', MB_OK);
  ModuleHandle := 0;
  halt;
end;

procedure Maina;
begin
  Hook(GetProcAddress(GetModuleHandle('ntdll.dll'), 'LdrLoadDll'), @myLdrLoadDll);
end;

begin
  Maina;
  readln;
end.

Última edición por Reasen fecha: 19-11-2016 a las 19:29:57.
Responder Con Cita
  #3  
Antiguo 19-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Pero no se puede editar... por buenos motivos... y me temo que no son posibles las excepciones: al menos yo no sabría cómo hacerla. En todo caso acaso estemos hasta "ensuciando" el post... y eso sí que no puede ser... puedes añadir tantos mensajes como quieras a este hilo y abrir otros hilos si lo estimas necesario.

P.D. Lo mismo me pongo yo a editar tu mensaje añadiendo el código de arriba (que ahora miraré) y no es lo que tú buscabas o algo... en fin... dejemos las cosas estar, ¡no tocarlo si funciona!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 19-11-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Poder: 11
Reasen Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola a todos,

Pero no se puede editar... por buenos motivos... y me temo que no son posibles las excepciones: al menos yo no sabría cómo hacerla.
Bueno, me resulta algo incómodo, pero supongo que no me queda otra.
Responder Con Cita
  #5  
Antiguo 19-11-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.670
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Está bien así, en distintos posts
Si hay que hacer alguna corrección se crea un nuevo post, se explica qué se ha modificado y el motivo, y se pone el nuevo código, así queda todo mucho más claro que si se edita el primer mensaje y nadie se entera de que se editó.
Responder Con Cita
  #6  
Antiguo 19-11-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.670
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Además, si ves que puede ser tratado como "truco", tenemos la sección "Trucos", donde también puedes crearlos
Responder Con Cita
  #7  
Antiguo 20-11-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
Aunque consigas evitar la carga de la dll maliciosa en el arranque de tu app, siempre se puede inyectar con un pequeño ejecutable. Esto quiere decir que no puedes quedarte en la defensa de la carga, has de ir más allá y cambiar el código de protección. Además deberás comprobar, en ese código, que no está cargada una dll no deseada. Puedes usar la API GetModuleFileName para ello pues te da la ruta completa de la dll. También puedes explorar las funciones que exporta. Un hook a la indocumentada LdrLoadDll...
Ha surgido el tema que comenté sobre un Hook a LdrLoadDll. ¿Por qué esa y no LoadLibrary? Pues porque LoadLibrary termina llamando a LdrLoadDll y muchos inyectores optan por esta para saltarse a la primera. Su declaración delphi es como sigue:
Código Delphi [-]
type
PUNICODE_STRING = ^UNICODE_STRING;
UNICODE_STRING = record
  Length: WORD; //USHORT;
  MaximumLength: WORD; //USHORT;
  Buffer: PWCHAR; //PWSTR;
end;

function LdrLoadDll(PathToFile: PWCHAR; Flags: ULONG; ModuleFileName: PUNICODE_STRING; ModuleHandle: PHANDLE): DWORD; stdcall;
UNICODE_STRING es la estructura en el Kernel para el manejo Unicode

Un Hook a LdrLoadDll debe tener en cuenta que afectará a cualquier carga de dll, legal o no, dinámica o estática, con lo que se debe filtrar que dll se puede cargar y cual no.

El problema de los Hooks a las API es que no siempre deben sustituir los 5 primeros bytes, puede que en una versión Windows así sea, pero puede que una actualización cambie esto ligeramente y que el hook haga caer toda la aplicación, esto requiere un mini-desensamblador en tiempo de ejecución. El que tenga interés por el tema puede visitar este tema de hace unos años: HOOK a la API en delphi y en C (trampolín)

Para ilustrar un poco más el asunto anti-inyección podéis leer este otro tema: ¿Protegernos contra inyecciones dll?. Está enfocado a proteger aplicaciones externas pero nada impide hookear nuestra propia aplicación.

Quisiera añadir alguna idea más para los que no quieran depender de la conexión a Internet, puede encriptarse cadenas vitales, incluso fragmentos de código vital, que precisen de la clave del producto para descifrarse, no habrá condicionales pero, claro está, la seguridad dependerá del algoritmo criptográfico usado. Nada es infalible, sólo el aburrimiento del cracker puede dejarnos en paz y quizás estas cosas le aburran.


Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar XML contra un XML Schema Sagara Internet 1 09-03-2010 07:23:31
Autobus contra Elefanta...... egostar La Taberna 20 25-09-2008 19:02:13
Contra los curiosos... Faust Humor 0 08-08-2008 02:07:32
Aplicacion Dephi contra Interbase en red WAN Luis F. Orjuela Firebird e Interbase 2 19-08-2004 09:34:01
Contra la Piratería diegolf Varios 8 12-08-2004 19:01:45


La franja horaria es GMT +2. Ahora son las 06:05:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi