elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1]
1  Programación / Programación General / Edición de imágenes con Python en: 18 Julio 2015, 02:54 am
Buenas,

Estoy intentando crear una aplicación para editar imágenes con Python.

Esto es lo que quiero hacer:
1.- Crear una imagen con  un screenshot #ok
2.- Convertir la imagen a blanco y negro #ok
3.- Borrar las filas que sean enteras  negras #ok
4.- Borrar las columnas que sean enteras negras

No entiendo la lógica del punto 3, y no soy capaz de editar  la función que borra las filas para que borre las columnas.

Espero que podáis ayudarme

Un saludo,


Código
  1. import pyscreenshot as ImageGrab
  2. from itertools import izip
  3. from PIL import Image
  4. import time
  5.  
  6. #Screenshot y guarda como .png
  7.  
  8. im1=ImageGrab.grab(bbox=(495,198,511,209))
  9. im1.save("imagen.png","png")
  10.  
  11. #Convertir imagen a blanco y negro
  12. col = Image.open("imagen.png")
  13. gray = col.convert('L')
  14. bw = gray.point(lambda x: 0 if x<128 else 255, '1')
  15. bw.save("imagenbw.png")
  16.  
  17. #Borrar las filas que sean completamente negras
  18. def find_rows_with_color(pixels, width, height, color):
  19.    rows_found=[]
  20.    for y in xrange(height):
  21.        for x in xrange(width):
  22.            if pixels[x, y] != color:
  23.                break
  24.        else:
  25.            rows_found.append(y)
  26.    return rows_found
  27.  
  28. rold_im = Image.open("imagenbw.png")
  29. if old_im.mode != 'RGB':
  30.    old_im = old_im.convert('RGB')
  31. pixels = old_im.load()
  32. width, height = old_im.size[0], old_im.size[1]
  33. rows_to_remove = find_rows_with_color(pixels, width, height, (0, 0, 0)) #Remove black rows
  34. new_im = Image.new('RGB', (width, height - len(rows_to_remove)))
  35. pixels_new = new_im.load()
  36. rows_removed = 0
  37. for y in xrange(old_im.size[1]):
  38.    if y not in rows_to_remove:
  39.        for x in xrange(new_im.size[0]):
  40.            pixels_new[x, y - rows_removed] = pixels[x, y]
  41.    else:
  42.        rows_removed += 1
  43. new_im.save("imagennew.png")
  44.  
2  Programación / Ingeniería Inversa / Proyecto inyección de código Superstackporker con Cheat Engine en: 9 Julio 2015, 13:04 pm
Buenas,

Primero de todo agradecer a Mad Antrax su ayuda el la elaboración de los siguientes códigos.

Estoy intentando inyectar código mediante Cheat Engine en el casino SuperStackPoker.

El objetivo es convertir el stack de los jugadores y las apuestas que realizan en función de la ciega grande de la mesa en la que se encuentren. Lo explicare de otro modo por si no jugáis a Poker.

Si un jugador esta sentado con 200 € en una mesa y el nivel de la mesa es 25NL, la ciega grande o apuesta mínima sera de 0,25 €. Por lo que este jugador esta sentado con 800 ciegas grandes o apuestas mínimas (200/0,25)
En cambio si el jugador tiene los mismos 200 €, pero esta en una mesa de nivel 200NL solo tendrá 100 apuestas mínimas. (200/2)

He conseguido realizar parte del código:

EL siguiente script multiplica el stack de todos los jugadores de la mesa por el valor de la apuesta mínima de la mesa.
Este scrip es solo para cuando un jugador iguala una apuesta, tengo otros dos para cuando suben o se retiran. Son las tres instrucciones que escriben el valor del stack.

Código:
[ENABLE]

aobscanmodule(INJECT,ClientRuntime.dll,00 CC CC 55 8B EC 8B 55 08 8B 02 89 81 E0 00 00 00) // should be unique
alloc(newmem,$1000)
alloc(var1,4)

label(code)
label(return)

var1:
dd #1

newmem:

code:

  mov [ecx+000000E0],eax
  push ebx
    mov ebx,[ecx+000000E0]
    imul ebx,[var1]
    mov [ecx+000000E0],ebx
  pop ebx
  jmp return

INJECT+0B:
  jmp code
  nop
return:
registersymbol(INJECT)
registersymbol(var1)
[DISABLE]

INJECT+0B:
  db 89 81 E0 00 00 00

unregistersymbol(INJECT)
dealloc(newmem)
unregistersymbol(var1)
dealloc(var1)

Con el siguiente scrip cargo el valor en var1

Código:
[ENABLE]

aobscanmodule(LeerApuestaMinima,ClientRuntime.dll,89 57 28 8B 4E 5C) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov [edi+28],edx
  mov [var1],edx
  mov ecx,[esi+5C]
  jmp return

LeerApuestaMinima:
  jmp code
  nop
return:
registersymbol(LeerApuestaMinima)

[DISABLE]

LeerApuestaMinima:
  db 89 57 28 8B 4E 5C

unregistersymbol(LeerApuestaMinima)
dealloc(newmem)

Funciona bien con algunos matices.
He utilizado el comando imul, pero en realidad lo que necesito es dividir. No he sido capaz de utilizar los comandos div y idiv.
El segundo problema es que como la instrucción que carga el valor de apuesta mínima es diferente de las de igualar, subir o retirarse pues cuando hay mas de una mesa abierta de distintos niveles pues el valor de var1 va cambiando constantemente y la multiplicación no se realiza por el valor que le corresponde a cada mesa.

He intentado juntar los dos scripts para que antes de realizar la operación lea el valor de la apuesta mínima, pero no he sido capaz.


Espero que podáis ayudarme.

Un saludo,
3  Programación / Scripting / Dividir en Auto Assemble Cheat Engine en: 7 Julio 2015, 01:02 am
Buenas,

Estoy tratando de modificar la interfaz de usuario de un soft de escritorio con Cheat Engine.
Necesito dividir el valor de una variable por el valor de otra variable y no consigo realizarlo.

En el siguiente script divido el valor de la variable1 por 4

Código:
[ENABLE]

aobscanmodule(script1,ClientRuntime.dll,0C 8B 02 89 81 E0 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
alloc(variable,4)

variable:
         dd #6

newmem:

code:
  mov [ecx+000000E0],eax
  shr [ecx+000000E0],2
  //push eax
  //     mov eax,[variable]
  //     shl [ecx+000000E0],ebx
  //pop eax
  jmp return

script1+03:
  jmp code
  nop
return:
registersymbol(script1)
registersymbol(variable)
[DISABLE]

script1+03:
  db 89 81 E0 00 00 00

unregistersymbol(script1)
dealloc(newmem)
dealloc(variable)

El valor de la segunda variable la tengo que extraer de la siguiente instrucción
ClientRuntime.dll+4DBF0E


Espero que me podáis echar una mano.


Un saludo,
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines