Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Como cambiar valores en la ventana "General" propiedades del sistema (https://www.clubdelphi.com/foros/showthread.php?t=38132)

hirving 15-02-2007 21:51:05

Necesito Ayuda
 
Hola, necesito ayuda, tengo una ram de 256mb pero quiero que diga que tengo 1,024mb, abrí mi computadora para limpiarla y mi perro masticó dos memorias que tenía a un lado de mi, si mi papa se da cuenta me va a ragañar, ya estoy ahorrando para reponer las memorias, la verdad no se mucho de programacion y esas cosas y mi conexion es muy lenta como para bajar el turbodelphi y hacer lo que aquí decía. Por favor ayúdenme.

Oscar_Net 17-09-2007 04:11:41

Puedes Mandarme ese archivo
 
Hola podrian ayudarme en lo que estoy haciendo.He estado viendo el foro y ante todo soy nuevo y he hecho algunas modificaciones a mi sistema para que se pareciera mas a Windows Vista, y solo me faltaria cambiar el valor del sistema operativo para hacerlo.

http://photos1.hi5.com/0006/246/248/63TnW9246248-02.jpg

Haci como se muestra en el enlace queda mi sistema,pero lo malo es que no puedo cambiar el nombre de sistema operativo:o

Oscar_Net 17-09-2007 04:14:17

Puedes Mandarme ese archivo
 
Cita:

Empezado por seoane (Mensaje 174186)
Vamos a intentar hacer algo elegante, todo sea por que no pelees con tu hermano, que eso esta muy feo :p :D

Podríamos hacer un programa que en un bucle buscara a intervalos regulares la ventana, y cambiara el texto. Esta solución es poco elegante, y además durante una fracción de segundo se podría mostrar el texto real. Además no tengo ganas de ponerme a buscar la ventana.

Así que ya puestos, vamos a matar moscas a cañonazos, que es mas divertido. Utilizando un Hook global, vamos a inyectar un dll en todos los procesos. Cuando nuestra dll detecte que ha sido inyectada en el proceso "rundll32.exe", que es el responsable de mostrar esa ventana, hará un subclassing de todas las ventanas de la clase "Link Window". Y ahora es donde damos el toque final, cada vez que una de estas ventanas reciba un mensaje del tipo WM_SETTEXT reemplazaremos el texto por el que a nosotros nos convenga.

Caramba ahora mismo me siento un hacker :D Y tu te preguntaras como funciona todo esto ... Pues bien en el zip que te mando te envió el código y el ejecutable de la dll (injection.dll) y el código del inyector (Namaris.exe). Descomprimelos en la misma carpeta y ejecuta el programa, ahora prueba a abrir las "Propiedades del sistema" y el valor ya debería de aparecer cambiado.

Ahora unos toques finales. Primero en el código de la dll encontraras una sentencia como la siguiente, comprueba que el valor a buscar y el nuevo son los correctos, y recompila:

Código Delphi [-]
Str:= StringReplace(Str,'1,00 GB','2,00 GB',[rfReplaceAll,rfIgnoreCase]);





Ahora, como te habrás dado cuenta, el programa se ve :eek: Esto tiene solución vete al código del ejecutable y busca una instrucción como la siguiente, borrala y recompila:

Código Delphi [-]
{$APPTYPE CONSOLE}





Y ahora solo queda que copies tanto el ejecutable como la dll a una carpeta como la de windows (c:\windows) y configures el equipo para que ejecute el programa cada vez que se inicie. Por ejemplo agregando una entrada a la clave de registro:
Código:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Si todo sale bien, mientras el programa este en ejecución, el valor se cambiara como por arte de magia. :D

PD: Solo espero que no utilices esto para engañar a un incauto y vender un ordenador, como si tuviera mas memoria de la que tiene o algo así. Eso me enfadaría muchísimo :mad:

El enlace (fuera del ClubDelphi) -> http://rapidshare.com/files/8594371/Namaris.zip.html

Ya que solo me faltaria esa parte para terminar, te mando un link para que veas lo que estoy haciendo
http://photos1.hi5.com/0006/246/248/63TnW9246248-02.jpg
Espero que me puedas ayudar:)

Percha 23-10-2007 13:00:24

Hola, podriais subir de nuevo el Namaris.ZIP? ha caducado el archivo.

Muchas gracias hamijos!

aeff 23-10-2007 15:48:51

y donde estan los codigos de la DLL y el programa?

Percha 24-10-2007 01:46:20

Cita:

Empezado por aeff (Mensaje 240529)
y donde estan los codigos de la DLL y el programa?

Los links invalidos en la pagina anterior.

darknees92 11-02-2008 22:14:51

Cita:

Empezado por seoane (Mensaje 174186)
Vamos a intentar hacer algo elegante, todo sea por que no pelees con tu hermano, que eso esta muy feo :p :D

Podríamos hacer un programa que en un bucle buscara a intervalos regulares la ventana, y cambiara el texto. Esta solución es poco elegante, y además durante una fracción de segundo se podría mostrar el texto real. Además no tengo ganas de ponerme a buscar la ventana.

Así que ya puestos, vamos a matar moscas a cañonazos, que es mas divertido. Utilizando un Hook global, vamos a inyectar un dll en todos los procesos. Cuando nuestra dll detecte que ha sido inyectada en el proceso "rundll32.exe", que es el responsable de mostrar esa ventana, hará un subclassing de todas las ventanas de la clase "Link Window". Y ahora es donde damos el toque final, cada vez que una de estas ventanas reciba un mensaje del tipo WM_SETTEXT reemplazaremos el texto por el que a nosotros nos convenga.

Caramba ahora mismo me siento un hacker :D Y tu te preguntaras como funciona todo esto ... Pues bien en el zip que te mando te envió el código y el ejecutable de la dll (injection.dll) y el código del inyector (Namaris.exe). Descomprimelos en la misma carpeta y ejecuta el programa, ahora prueba a abrir las "Propiedades del sistema" y el valor ya debería de aparecer cambiado.

Ahora unos toques finales. Primero en el código de la dll encontraras una sentencia como la siguiente, comprueba que el valor a buscar y el nuevo son los correctos, y recompila:
Código Delphi [-]
  Str:= StringReplace(Str,'1,00 GB','2,00 GB',[rfReplaceAll,rfIgnoreCase]);

Ahora, como te habrás dado cuenta, el programa se ve :eek: Esto tiene solución vete al código del ejecutable y busca una instrucción como la siguiente, borrala y recompila:
Código Delphi [-]
  {$APPTYPE CONSOLE}

Y ahora solo queda que copies tanto el ejecutable como la dll a una carpeta como la de windows (c:\windows) y configures el equipo para que ejecute el programa cada vez que se inicie. Por ejemplo agregando una entrada a la clave de registro:
Código:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Si todo sale bien, mientras el programa este en ejecución, el valor se cambiara como por arte de magia. :D

PD: Solo espero que no utilices esto para engañar a un incauto y vender un ordenador, como si tuviera mas memoria de la que tiene o algo así. Eso me enfadaría muchísimo :mad:

El enlace (fuera del ClubDelphi) -> http://rapidshare.com/files/8594371/Namaris.zip.html

que tal una pregunta podrias mandarme otra vez el link del ejecutable injection.exe y el de namariz.exe para que los utilize, es que tus links estan caducados y no sirven espero se pueda de antemano gracias

Saindoft 31-10-2008 05:38:18

Cita:

Empezado por seoane (Mensaje 174226)
Vaya, parece que tengo problemas para enviártelo a tu correo. Pues aquí te dejo un enlace en RapidShare, para que lo descargues. Tienes una versión del ejecutable que no se muestra, y un dll que cambia 504 MB por 1,00 GB. Espero que te sirva

http://rapidshare.com/files/8672820/Namaris2.zip.html


Hola seoane soy saindoft uno de tus
colegas y fanatico del foro, he encontrado muy interesante:eek::eek: este truco
y quisiera probarlo pero del link.. que pusiste no puedo bajarlo, quisiera
si es posible que pusieras un link con el archivo .zip adjunto. gracias de antemano:confused:

seoane 31-10-2008 15:26:27

Bien, el código de la dll es el siguiente:
Código Delphi [-]
library Injection;

uses
  Windows, Sysutils, Messages, Psapi, CommCtrl;

type
  TShared = record
    Hook: HHooK;
    AttachCount: Integer;
  end;
  PShared = ^TShared;

  PItem = ^TItem;
  TItem = record
    hWnd: HWND;
    WndProc: Pointer;
    Next: PItem;
  end;

var
  Mutex, Mem: THandle;
  Shared: PShared;
  Injected: Boolean;
  HandleList: PItem;

function FindWindowProc(hWnd: HWND; Item: PItem): Pointer;
begin
  if Item <> nil then
  begin
    if Item.hWnd = hWnd then
      Result:= Item.WndProc
    else
      Result:= FindWindowProc(hWnd,Item.Next);
  end else
    Result:= nil;
end;

function WindowProc(hWnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM):
  LRESULT; stdcall;
var
  Str: String;
begin
  if (Msg = WM_SETTEXT) then
  begin
    Str:= String(PChar(LParam));
    Str:= StringReplace(Str,'1,00 GB','2,00 GB',[rfReplaceAll,rfIgnoreCase]);
    Str:= StringReplace(Str,'512 MB','1,00 GB',[rfReplaceAll,rfIgnoreCase]);
    LParam:= Longint(PChar(Str));
  end;
  Result:= CallWindowProc(FindWindowProc(hWnd,HandleList),hWnd,Msg,WParam,lParam);
end;

procedure HookWindow(hWnd: HWND);
var
  Item: PItem;
begin
  if FindWindowProc(hWnd, HandleList) = nil then
  begin
    GetMem(Item,Sizeof(TItem));
    Item.hWnd:= hWnd;
    Item.Next:= HandleList;
    Item.WndProc:= Pointer(SetWindowLong(hWnd,GWL_WNDPROC,LongInt(@WindowProc)));
    HandleList:= Item;
  end;
end;

function CallWndProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
  stdcall;
var
  ClassName: array[0..16] of Char;
begin
  if Code = HC_ACTION then
    if Injected then
    begin
      FillChar(ClassName,Sizeof(ClassName),0);
      if GetClassName(PCWPStruct(lParam).hwnd,@ClassName,Sizeof(ClassName)-1) > 0 then
        if StrIComp(ClassName,'Link Window') = 0 then
        begin
          HookWindow(PCWPStruct(lParam).hwnd);
        end;
    end;
  Result := CallNextHookEx(Shared^.Hook, Code, wParam, lParam);
end;

procedure StartHook; stdcall;
begin
  if Shared <> nil then
  begin
    WaitForSingleObject(Mutex, INFINITE);
    try
      with Shared^ do
      begin
        if Hook = 0 then
          Hook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, HInstance, 0);
      end;
    finally
      ReleaseMutex(Mutex);
    end;
  end;
end;

procedure StopHook; stdcall;
begin
  if Shared <> nil then
  begin
    WaitForSingleObject(Mutex, INFINITE);
    try
      with Shared^ do
      begin
        if Hook <> 0 then
        begin
          UnhookWindowsHookEx(Hook);
          Hook := 0;
        end;
      end;
    finally
      ReleaseMutex(Mutex);
    end;
  end;
end;

procedure Inject;
var
  Process: THandle;
  ModName: array[0..MAX_PATH] of Char;
  Target: array[0..MAX_PATH] of Char;
begin
  Injected:= FALSE;
  Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE,
    GetCurrentProcessId);
  if Process <> 0 then
  begin
    if GetModuleFileNameEx(Process, 0, ModName,sizeof(ModName)-1) > 0  then
    begin
      FillChar(Target,Sizeof(Target),#0);
      GetSystemDirectory(@Target,Sizeof(Target)-1);
      StrLCat(Target,'\rundll32.exe',Sizeof(Target)-1);
      OutputDebugString(Target);
      if StrIComp(Target,ModName) = 0 then
      begin
        // Un pequeño pitido nos avisa de que no hemos infiltrado
        Windows.Beep(500,100);
        HandleList:= nil;
        Injected:= TRUE;
      end;
    end;
    CloseHandle(Process);
  end;
end;

procedure Attach; stdcall;
var
  isNew: boolean;
begin
  Mutex := CreateMutex(nil, True, '{92366DA1-4F66-472D-BE12-65F0993F62AC}');
  try
    Mem := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(TShared),
      '{D1A38D62-9FAB-4298-A358-579D2D286E40}');
    isNew := GetLastError() = 0;
    if Mem <> 0 then
      Shared := MapViewOfFile(Mem, FILE_MAP_WRITE, 0, 0, 0)
    else
      Shared := nil;
    if Shared <> nil then
      if isNew then
        with Shared^ do
        begin
          Hook := 0;
          AttachCount := 1;
        end
      else
        inc(Shared^.AttachCount);
  finally
    ReleaseMutex(Mutex);
  end;
  // Aqui viene la inyeccion
  Inject;
end;

procedure UnHookWindows(Item: PItem);
begin
  if Item <> nil then
  begin
    UnHookWindows(Item.Next);
    SetWindowLong(Item.hWnd,GWL_WNDPROC,LongInt(Item.WndProc));
    FreeMem(Item);
  end;
end;

procedure Detach; stdcall;
begin
  WaitForSingleObject(Mutex, INFINITE);
  try
    if (Shared <> nil) then
      dec(Shared^.AttachCount);
  finally
    ReleaseMutex(Mutex);
  end;
  if (Shared <> nil) then
    if Shared^.AttachCount <= 0 then
    begin
      StopHook;
      UnmapViewOfFile(Shared);
      CloseHandle(Mem);
      CloseHandle(Mutex);
    end;
  if Injected then
    UnHookWindows(HandleList);
end;

procedure DLLEntryPoint(Reason: integer);
begin
  case Reason of
    Dll_Process_Detach: Detach;
    Dll_Process_Attach: Attach;
  end;
end;

exports
  StartHook,
  StopHook;

begin
  Attach;
  DLLProc:= @DLLEntryPoint;
end.
Exporta dos funciones StartHook y StopHook llamar la primera para activar y la segunda para desactivar el Hook.

PD: Espero que esto sirva para que la gente deje de preguntar por el .zip con el programa. Creo que el código es suficiente para aquellos que quieren saber como funciona, y mantendrá alejados a los que solo quieren gastar una broma a un ¿amigo? :D

Saindoft 04-11-2008 01:45:34

amigos es lo que sobra en el foro
 
gracias seoane por editar lo que todos esperabamos con tantas
ansias, ........... amigos es lo que sobra en este foro..............,
y espero que como bien tu dices este codigo no sea utilizado
maliciosamente abusando de las buenas intenciones de personas como tu.:)

JHONYBLUU 28-02-2009 21:43:11

El Mismo Problema De La Ram
 
Hola Seaone Quisiera Q Me Ayudes Con El Mismo Problema De Namaris Quiero Hacer Exacatamente Lo Mismo Doblar La Memeoria Ram De 1g A 2g Pero Intente Entrar En Los Enlaces Y Ya No Funcionan Por Si Me Ayudaras Te Lo Agradeceria Mucho

zorrollon 08-06-2010 13:15:48

Ayuda, por favor.. alguien podria poner el codigo fuente de la aplicacion.. porfavor. tengo horas... tratando y no puedo.. porfa porfa porfa

Neftali [Germán.Estévez] 08-06-2010 14:07:58

Pues si nome equivoco lo tienes un par de post más arriba. :confused:

zorrollon 08-06-2010 18:18:28

pero ese es el codigo del dll no ?... y me parece hay que hacer un .dll y un .exe no ?...

emtec 14-07-2010 03:15:05

Saludos
 
Hola soy nuevo en este foro y los felicito por los temas tan novedososy buenos que manejan aqui,
Me quiero dirigir especialente a seoane, comienzo enviandote mis felicitaciones por tus aportaciones tan interesantes lav erdad tienes un muy buen nivel de programacion por lo que veo. al abordar este tema entoiendo los proc y sobretodo loscontras ya que se puede malintepretar, ya que puede ser usado de mala manera, lo cual se que hay gente que es maliciosa y solo hackea l oque pueda, en mi caso Soy ing tambien, me interesa mucho lacreacion de software y hardware lo cual este tema en especifico ha coincidido con unos problemas que tengo al inyectar a windows unos datos, al ver com oresolviste el problema meimpresiono laverdad no meconsidero un master en delphi lo manejo pero no asi y me interesomuchisimo tu propuesta de tu exe y tu dll, este es mi primer post y quisiera que me pudieras auxiliar enviandome el dll y el exe para cotejarlos, estudiarlos y aplicarlos para un frame que estoy diseñando, lamentablemente el link que has puesto no sirve, seria de mucha ayuda que me pudieras auxiliar enviandomelo a mi correo que es emos530@hotmail.com y te enviare mis avances para compartirlos con vos, me es muy interesante poder manipular las entrañas de windows por ello este tema me parecio el idel para mis propositos y sobretodo muy bueno, estamos encontacto espero tu respuesta:o

zorrollon 14-07-2010 03:22:35

Cita:

Empezado por emtec (Mensaje 370299)
Hola soy nuevo en este foro y los felicito por los temas tan novedososy buenos que manejan aqui,
Me quiero dirigir especialente a seoane, comienzo enviandote mis felicitaciones por tus aportaciones tan interesantes lav erdad tienes un muy buen nivel de programacion por lo que veo. al abordar este tema entoiendo los proc y sobretodo loscontras ya que se puede malintepretar, ya que puede ser usado de mala manera, lo cual se que hay gente que es maliciosa y solo hackea l oque pueda, en mi caso Soy ing tambien, me interesa mucho lacreacion de software y hardware lo cual este tema en especifico ha coincidido con unos problemas que tengo al inyectar a windows unos datos, al ver com oresolviste el problema meimpresiono laverdad no meconsidero un master en delphi lo manejo pero no asi y me interesomuchisimo tu propuesta de tu exe y tu dll, este es mi primer post y quisiera que me pudieras auxiliar enviandome el dll y el exe para cotejarlos, estudiarlos y aplicarlos para un frame que estoy diseñando, lamentablemente el link que has puesto no sirve, seria de mucha ayuda que me pudieras auxiliar enviandomelo a mi correo que es y te enviare mis avances para compartirlos con vos, me es muy interesante poder manipular las entrañas de windows por ello este tema me parecio el idel para mis propositos y sobretodo muy bueno, estamos encontacto espero tu respuesta



El codigo fuente del dll esta mas arriba ,del exe, nada.. y ayuda.. por aqui ni pidas... pues aunque los que saben, no hacen favor de compilar el exe, me parece que lo hacen mas por un asunto de exclusividad, que por seguridad, pero enfin... parece ser este post lo tienen olvidado., siguele buscando la respuesta esta cerca, el dll trabaja, simplemente falta el ejecutable que lo arranque de inicio.

Saludos.

Neftali [Germán.Estévez] 14-07-2010 12:37:27

Cita:

Empezado por zorrollon (Mensaje 370302)
El codigo fuente del dll esta mas arriba ,del exe, nada.. y ayuda.. por aqui ni pidas... pues aunque los que saben, no hacen favor de compilar el exe, me parece que lo hacen mas por un asunto de exclusividad, que por seguridad, pero enfin...

Pues no van por ahí las cosas.

Lo que "molesta" un poco por aquí, es la gente que pregunta sin ni siquiera haberse molestado en buscar, los que piden sin ni siquiera haberse molestado en probar y un poco más, los que con 3 mensajes se permiten escribir cosas como las que has escrito tú.

El código de la DLL está más arriba. Para hacer un EXE que llame a las dos funciones, basta con un par de botones y 1 línea en cada uno. Si buscas en los foros hay muchos mensajes sobre DLL's y si buscas en internet muchos más. Posíblemente lo encontrarás en menos tiempo de lo que has tardado en escribir esa "sandez" de mensaje, pero supongo que es más fácil pedir que se lo den a uno todo hecho... :(:(:(

Pero nada, es más fácil que te demos el proyecto hecho, el código de la DLL, te lo compilamos y si quieres te hago un icono y te escribo la ayuda.
¿Quieres que te generemos el instalador, también?

escafandra 14-07-2010 16:02:31

Muy cierto lo que apunta Neftali.

La sensación que trasmiten estas últimas peticiones, es requerir código a la desesperada en un tema que puede resultar un tanto delicado y que, por otra parte, cualquier programador mediano puede solucionar con facilidad.

No se si esa ansiedad es por el uso que se le pueda dar a dicho código, o por colgarse alguna inmerecida medalla... ¿Que mérito tiene el uso de un código que no se entiende en absoluto y que no se sabe como usar?:rolleyes:.

Este foro, como otros tantos, está lleno de usuario que ayudan sin esperar nada a cambio, solo con pasearse un rato por cualquier hilo se puede percibir.:D

Saludos.

zorrollon 15-07-2010 01:18:16

p1nche metiche
 
Cita:

Empezado por Neftali (Mensaje 370337)
Pues no van por ahí las cosas.

Lo que "molesta" un poco por aquí, es la gente que pregunta sin ni siquiera haberse molestado en buscar, los que piden sin ni siquiera haberse molestado en probar y un poco más, los que con 3 mensajes se permiten escribir cosas como las que has escrito tú.

El código de la DLL está más arriba. Para hacer un EXE que llame a las dos funciones, basta con un par de botones y 1 línea en cada uno. Si buscas en los foros hay muchos mensajes sobre DLL's y si buscas en internet muchos más. Posíblemente lo encontrarás en menos tiempo de lo que has tardado en escribir esa "sandez" de mensaje, pero supongo que es más fácil pedir que se lo den a uno todo hecho...

Pero nada, es más fácil que te demos el proyecto hecho, el código de la DLL, te lo compilamos y si quieres te hago un icono y te escribo la ayuda.
¿Quieres que te generemos el instalador, también?


Dios... tienes razon... con tu comentario me haz hecho reflexionar.... cambiare mi forma de escribir en el foro.... es mas cambiare de vida.. dejare de fumar.. de beber... para poder volverme un dios programador,forero,critico indiscutible,sabelotodo,como tu, jajajaja.... p1nche metiche. si no vas a ayudar a resolver las peticiones que no solo yo,si no varios usuarios del foro estamos haciendo en este post, no te metas a llenar el tema de basura. de igual manera,Gracias por tu comentario.

Neftali [Germán.Estévez] 15-07-2010 11:47:45

Cita:

Empezado por zorrollon (Mensaje 370426)
con tu comentario me haz hecho reflexionar.... cambiare mi forma de escribir en el foro...

En cuanto a lo demás "me la suda", pero si no cambias esto, te auguro poco futuro en este foro, ya te lo digo.


La franja horaria es GMT +2. Ahora son las 01:26:40.

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