• Sábado 7 de Diciembre de 2024, 21:21

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - RHL

Páginas: [1]
1
ASM (Ensamblador) / SObre INstruccion JA
« en: Martes 10 de Enero de 2012, 05:59 »
Buenas :)
Pues tengo problemas con entender como funciona la instruccion JA
Hay! informacion sobre JA pero no la entiendo muy bien :P

2
C/C++ / Usar Funciones de NTDLL?
« en: Lunes 9 de Enero de 2012, 05:22 »
Buenas que libreria(s) tengo que agregar para usar las api nativas?
Gracias!

3
Sobre los Foros de SoloCodigo / Ultimos Respuestas
« en: Lunes 9 de Enero de 2012, 03:55 »
Buenas a todos :)
Quisiera solamente sugerir algo que vendria bien al foro :)
quiza en la parte de abajo del foro vendria bien las ultimas respuestas a todos los temas creo que muchos nos fijamos en eso...
:)

4
Visual Basic 6.0 e inferiores / [VB+ASM][SRC] PUTMEMx - [ASM inline]
« en: Domingo 8 de Enero de 2012, 04:06 »
La funcion es un putmem x bytes, lo que hace es insertar X bytes a una posicion de memoria indicada, esta funcion que hice
es identica a las funciones:

Declare Sub PutMem1 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Byte)
Declare Sub PutMem2 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Integer)
Declare Sub PutMem4 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Long)
Declare Sub PutMem8 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Currency)

salvo que esta se pueden insertar cualquier cantidad de bytes, que es el tercer parametro el numero de bytes que uno debe
de indicar a insertar, tambien hay que tomar en cuenta como estan almacenados los bytes en la memoria eso es si es microprocesador de uno es little o big...


Código: Visual Basic
  1. Option Explicit
  2. Private Declare Function CallWindowProc Lib "USER32" Alias "CallWindowProcW" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  3.  
  4.  
  5. Private Sub Form_Load()
  6.     ' By RHL no quitar texto
  7.    Dim test As String: test = "Test de XXXXXX en inline asm!"
  8.     Dim newp As String:         newp = "PUTMEM"
  9.    
  10.     Dim A As Long:A = &H101010
  11.     Dim B As Byte:B = &H20
  12.    
  13.     Call vASM_PUTMEMx(VarPtr(A), VarPtr(B), 1)
  14.     MsgBox A
  15.  
  16.     Call vASM_PUTMEMx(StrPtr(test) + 16, StrPtr(newp), 12)
  17.     MsgBox test
  18.    
  19. End Sub
  20.  
  21. 'Declare Sub PutMemx Lib "msvbvm60" (ptr As Any, ByVal newval As Byte)
  22. Private Sub vASM_PUTMEMx(ByVal ptr As Long, ByVal newval As Long, ByVal nB As Long)
  23.     Dim Acode(25)   As Byte: Acode(25) = &HC3
  24.    
  25.     Acode(17) = &H8A: Acode(18) = &H10: Acode(19) = &H88: Acode(20) = &H17
  26.     Acode(21) = &H40: Acode(22) = &H47: Acode(23) = &HE2: Acode(24) = &HF8
  27.  
  28.     Dim i           As Long
  29.    
  30.     '       MOV EAX,OFFSET newval
  31.    '       MOV EDI,OFFSET ptr
  32.    '       XOR ECX,ECX
  33.    '       MOV ECX,nB
  34.    'INI:   MOV DL,[EAX]
  35.    '       MOV [EDI], DL
  36.    '       INC EAX
  37.    '       INC EDI
  38.    '       LOOP INI
  39.    
  40.  
  41.     Acode(0) = &HB8
  42.     i = LongToByte(newval, Acode(), i + 1)
  43.  
  44.     Acode(5) = &HBF
  45.      
  46.     i = LongToByte(ptr, Acode(), i + 1)
  47.     Acode(10) = &H33: Acode(11) = &HC9
  48.    
  49.     Acode(12) = &HB9
  50.     i = LongToByte(nB, Acode(), i + 3)
  51.  
  52.     Call CallWindowProc(ByVal VarPtr(Acode(0)), 0&, 0&, 0&, 0&)
  53. End Sub
  54.  
  55. 'by BlackZeroX
  56. Private Function LongToByte(ByVal lLong As Long, ByRef bReturn() As Byte, Optional i As Integer = 0) As Long
  57.     bReturn(i) = lLong And &HFF
  58.     bReturn(i + 1) = (lLong And &HFF00&) \ &H100
  59.     bReturn(i + 2) = (lLong And &HFF0000) \ &H10000
  60.     bReturn(i + 3) = (lLong And &HFF000000) \ &H1000000
  61.     LongToByte = i + 4
  62. End Function
  63. ' By RHL no quitar texto
  64.  

en vb los caracteres estan en unicode osea dos bytes por caracteres

5
en este tuto enseñare a como insertar un archivo manifest para que un programa hecho en vb se ejecute con privilegios
de administrador y este metodo no solo lo podemos ocupar para tal cosa, tambien sirve para que nuestras
aplicaciones tengan "estilo XP" eso quiere decir que lo botones, barras, demas controles, seran al estilo del
windows que tengamos. solo necesitais la herramienta llamada "mt.exe" incluida en las herramientas SDK,
notepad.exe y vb.
Respecto a la herramienta que inserta el manifest (mt.exe) a nuestras aplicaciones pueden descargarla la SDK
aqui:  http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6510
si lo quieren el archivo Mt.exe lo e subido aqui: http://www.mediafire.com/?qw2f5w0xrr4d2fq
descargando solo este archivo necesitaran al menos uno de estos requisitos:
1)
► Visual Studio 2005 o posteriores

2)
► Microsoft Office 2003 o posteiores
► Visual Studio Team System


bien veamos el archivo manifest base que nos da microsoft para poder modificarlo para
nuestras aplicaciones:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="NAME"
     type="win32"/>
  <description>Ejemplo Obtener Privilegios</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="PRIVILEGE"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>


Bien como ven e marcado con azul en lo que debemos fijarnos y con rojo que es lo que generalmente se
tiene que modificar...

Name: nombre correcto del proyecto

Description ( optional ): podemos agregar una descripcion aunque es opcional para editor de recursos de este
tipo ahi es donde podemos visualizar la descripcion tambien...

Level: es el nivel de privilegio que queremos darle a nuestra aplicacion, ya que hay distintos niveles
de seguridad que una aplicacion puede obtener seria importante leer un poco aqui un dreve que e hecho:


"asInvoker": La aplicacion se ejecuta con los privilegios de hereda el proceso padre... osea del usuario o del proceso que lo ejecuto

"highestAvailable": La aplicacion se ejecuta con los privilegios de la cuenta de usuario...

"requiereAdministrator": el privilegio mas alto, la aplicacion se ejecuta como administrador...

lo demas por lo general no se modifica para apliaciones de VB :P estoy estudiando sobre el comportamiento de los
manifest para apliaciones hechas en C++ con 64 bits y es otro rollo..
bueno para mas informacion esta la MSDN

modificado el archivo manifest lo guardamos con este formato de nombre: NOMBRE.exe.manifest
el NOMBRE debe de tener el mismo nombre que el ejecutable yo por ejemplo tomare por defecto proyecto1:
Proyecto1.exe.manifest

para que no ocurran errores durante el ensamblaje es mejor que el archivo Mt.exe lo copien como en un directorio donde no
requiere de privilegios ya que aparte que facilita con las direcciones de ejecutable, el manifest, y el archivo Mt.exe requiere de
privilegios para que todo salga correcto. yo por ejemplo el escritorio, yo tomare encuenta que lo tienen ahi...
bien ahora abrimos el DOS nos vamos a la ruta del escritorio... en donde deben de estar los tres archivos ( mt.exe, proyecto1.exe, proyecto1.exe.manifest )

el comando para ensamblar es el siguiente:
Código: [Seleccionar]
mt.exe -manifest proyecto1.exe.manifest -outputresource:proyecto1.exe;#1
el comando anterior esta exactamente para insertar el manifest con los archivos que tome de ejemplo, solo deben de cambiar
los nombre de los archivos.
luego del proceso el ejecutable como podrais ver:


duda comentar, saludos :)

6
Visual C++ / Configurar VC para proyecto "limpio"
« en: Jueves 10 de Noviembre de 2011, 04:05 »
buenas a todos :)
pues tengo esa duda alguien me puede enseñar a configurar o como se hace para
configurar VC ( tengo VC 2008 express ) para que me genere proyecto limpio osea por
ejemplo hago un simple hola mundo y la carpeta del proyecto llega hasta pesar 5mb!
es demaciado! :/ a mi me gusta VC su entorno no quiero cambiarme :(
Quisiera que solo me generara el archivo de espacio de trabajo , El/Los codigo/s fuentes ( Cpp) y otros ( .h )
pero me genera .ilk, .ncb ( el que pesa mas ) ,.pdb ( tambien pesa bastante ) , .idb, entre otros
ya me esforze buscando un poco pero exactamente no e encontrado mucho :/
sobre el peso del exe ya lo tengo entendido eso no importa :)
se los agradeceria mucho , Mil gracias!


7
Visual Basic 6.0 e inferiores / Como Usar API: RegisterWIndowMessage?
« en: Martes 1 de Noviembre de 2011, 08:22 »
buenas
estoy queriendo aprender a usar apis "extrañas" para mi y pues en tope con esta api
y no e podido entender como es que trabaja e buscado en la red algun codigos lo mas sencillo posible pero
no e podido encontrar uno que lo entienda :/
e leido en la msdn que crear un mensaje unico en el sistema es todo lo que e entendido
si alguien me puede ayudar a entender por favor agradecido :D
 :ayuda:

Páginas: [1]