|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Ingeniería Inversa / Duda con ollydbg y asm
|
en: 20 Septiembre 2013, 05:50 am
|
Hace poco que me he metido a fondo con ollydbg lo vi hace tiempo pero no me meti de lleno, y pues ahora me meti de lleno para hookear desde asm, ya que es el lenguaje que mas me gusta, pero he tenido unas dudas que no consigo solucionar incluso buscando :S a ver si me podéis ayudar... Aqui os dejo el codigo, lo compilo desde fasm, y debajo de el os dejo las dudas por si alguien me puede echar un cable format PE GUI 4.0 entry main
include '..\..\INCLUDE\win32ax.inc'
section '.idata' import data readable
library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL'
import kernel32,\ ExitProcess,'ExitProcess',\ AllocConsole, 'AllocConsole',\ GetStdHandle,'GetStdHandle',\ WriteConsole, 'WriteConsoleA',\ GetModuleHandle,'GetModuleHandleA',\ GetProcAddress, 'GetProcAddress',\ WriteProcessMemory, 'WriteProcessMemory',\ GetCurrentProcess, 'GetCurrentProcess'
import user32,\ MessageBox,'MessageBoxA',\ LoadIcon, 'LoadIconA',\ LoadCursor, 'LoadCursorA',\ DefWindowProc, 'DefWindowProcA',\ RegisterClass, 'RegisterClassA',\ CreateWindowEx, 'CreateWindowExA' ,\ PostQuitMessage, 'PostQuitMessage',\ GetMessage, 'GetMessageA',\ TranslateMessage, 'TranslateMessage',\ DispatchMessage, 'DispatchMessageA'
section '.data' data readable writable
Adrr DD 0
Jump DB 0xe9 DD 0x65467689 DB 0xc3
section '.text' code readable executable
main: invoke GetModuleHandle, 'user32.dll' invoke GetProcAddress, eax, 'MessageBoxA' mov [Adrr], eax invoke GetCurrentProcess invoke WriteProcessMemory, eax, [Adrr], Jump, 6, 0 nop nop invoke MessageBox, 0, 'Texto', 'Titulo', MB_OK nop invoke ExitProcess, 0
Hook: invoke AllocConsole invoke GetStdHandle, STD_OUTPUT_HANDLE
invoke WriteConsole, eax, "Hola", 4, 0, 0 retn
Las dudas que tengo son las siguientes: 1: Jump DB 0xe9 DD 0x65467689 DB 0xc3 en esta parte no se podria hacer algo como: Jump DB 0xe9 DD Hook DB 0xc3 Ya que tengo este "cartel" o no se como llamarlo Hook: invoke AllocConsole Luego compilo y manualmente busco en el ollydbg la posicion de esta sección (hook) y la pongo en su variable correspondiente (jump) para que termine: e9(jmp) ?? ?? ?? ?? c3(retn) Pero por ejemplo si la posicion de la sección hook es: 0040307B y la meto de la manera anterior Jump DB 0xe9 DD 0x0040307B DB 0xc3 al usar invoke WriteProcessMemory, eax, [Adrr], Jump, 6, 0 me lo deja asi: http://i39.tinypic.com/160pv7a.pngy si la pongo asi: Jump DB 0xe9 DB 0x00 DB 0x40 DB 0x30 DB 0x7B DB 0xc3 termina asi: http://i44.tinypic.com/1gm5jm.pngY yo ya no entiendo que narices es una columna o la otra... se suponia que era hex... pero ahora ya estoy hecho un lio AARG A ver si me podeis ayudar gracias de antemano...
|
|
|
2
|
Programación / Programación C/C++ / c++ winapi microfono
|
en: 16 Abril 2013, 01:59 am
|
Hola, estuve buscando por el foro pero no encuentro lo que busco. Tengo un proyecto donde obtengo el audio del microfono y luego lo reproduzco: const int NUMPTS = 44100 * 1; int sampleRate = 44100; short unsigned int waveIn[NUMPTS];
for( int i = 0; i < NUMPTS; i++ ) { waveIn[i] = 0; }
HWAVEIN hWaveIn; WAVEHDR WaveInHdr; HWAVEOUT hWaveOut;
WAVEFORMATEX pFormat; pFormat.wFormatTag = WAVE_FORMAT_PCM; pFormat.nChannels = 1; pFormat.nSamplesPerSec = sampleRate; pFormat.nAvgBytesPerSec = 2 * sampleRate; pFormat.nBlockAlign = 2; pFormat.wBitsPerSample = 16; pFormat.cbSize = 0;
waveInOpen(&hWaveIn, WAVE_MAPPER, &pFormat, 0, 0, WAVE_FORMAT_DIRECT);
WaveInHdr.lpData = (LPSTR)&waveIn; WaveInHdr.dwBufferLength = 2 * NUMPTS; WaveInHdr.dwBytesRecorded = 0; WaveInHdr.dwUser = 0; WaveInHdr.dwFlags = 0; WaveInHdr.dwLoops = 0; waveInPrepareHeader(hWaveIn, &WaveInHdr, sizeof(WAVEHDR));
waveInAddBuffer(hWaveIn, &WaveInHdr, sizeof(WAVEHDR));
waveInStart(hWaveIn);
cout << "Recording..." << endl; Sleep((NUMPTS/sampleRate) * 1000);
FILE *audio = fopen("audio.txt", "w+"); for( int i = 0; i < NUMPTS; i++ ) { fprintf(audio, "%d\n", (int)waveIn[i] ); } fclose(audio);
//cout << "Playing..." << endl;
//if(waveOutOpen(&hWaveOut, WAVE_MAPPER, &pFormat, 0, 0, WAVE_FORMAT_DIRECT)) //{ // MessageBoxA(NULL, "Failed to replay", NULL, MB_OK | MB_ICONEXCLAMATION ); //}
//waveOutSetVolume(hWaveOut, 0xFFFF); //waveOutWrite(hWaveOut, &WaveInHdr, sizeof(WaveInHdr)); //Sleep((NUMPTS/sampleRate) * 1000);
//waveOutUnprepareHeader(hWaveOut, &WaveInHdr, sizeof(WAVEHDR)); waveInUnprepareHeader(hWaveIn, &WaveInHdr, sizeof(WAVEHDR)); waveInClose(hWaveIn); //waveOutClose(hWaveOut); Ahora mismo lo tengo para que lo guarde en un txt el sonido entrante durante 1 segundo, quisiera tratar los números, para hacer un oscilador del sonido, saber cuando es fuerte o debil el sonido. Como son 2 bytes, es de 0 a 65535, pero no se cuando es bajo y cuando es fuerte o como funciona este sistema... Quisiera poder distinguirlos para hacer una media y hacer un oscilador del audio... si pudierais ayudarme me seria de gran ayuda.
|
|
|
3
|
Programación / Programación C/C++ / Socket c++ server y navegador web (chrome)...
|
en: 16 Abril 2012, 23:23 pm
|
Hola buenas noches, vengo aqui a solicitar algo de información ya que no encuentro en Internet nada relacionado... Me meti en el desarrollo de sockets en c++, y consegui conectar el navegador web al server socket, (muy facil...), pero ahora no se como responderle al navegador web y enviarle la informacion necesaria y el html correspondiente, espero que me podais ayudar... ya que esto es un problema demasiado facil y me da verguenza publicar algo tan tonto... xDD Dejo imagen de la cabecera http y el server... Gracias.
|
|
|
4
|
Programación / ASM / Asm en dos portable?, "variables" en asm.
|
en: 4 Febrero 2012, 22:51 pm
|
Hola buenas noches, (al menos en mi pais jeje).
Mis dudas son las siguientes:
*Uso Fasm
Si creo cualquier EXE, en Fasm, en Windows, seria portable para cualquier pc con Windows?.
Y lo otro es, yo guardo una cantidad de memoria fija, para guardar datos, ejemplo, 4 bytes, para guardar la palabra "Hola", si yo ahora quiero incluirle a "Hola", un " Mundo", hay alguna tecnica en concreto para separar todo el codigo de despues, para agrandar los 5 bytes a el tamaño de "Hola Mundo"?, o tengo que cambiar la direccion de memoria, reservando en otro sitio X bytes, y luego "informar" al resto del codigo que "ahi" esta la frase/palabra?.
Gracias y espero contestaciones.
|
|
|
5
|
Programación / ASM / Tipo de licencia de asm y otros.
|
en: 5 Agosto 2011, 10:32 am
|
Hola, buenas, mi proposito es intentar hacer un S.O (no una distro de linux), no voy a pedir miembros, ni nada por el estilo solo que si por favor me pueden resolver unas dudas que encontre a lo largo de la mitad del libro de asm de "Francisco Charte Ojeda", se que es una locura el intentar hacer un S.O pero si no me pongo un reto, no tengo la motivacion de aprender, por eso como quiero aprender pero soy muy... vago me pongo un proyecto-reto, porque cuando tengo un proyecto soy el que más da en el proyecto. 1. Estuve mirando y el procesador 8080 de intel tiene las mimas instrucciones que los actuales (intel core duo), mi pregunta es, si un programa hecho para un procesador de intel antiguo de 8 bits sirve para uno de 32 bits por ejemplo, con las mismas instrucciones, supongo que amd y otros fabricantes tendran otras instrucciones no?. 2. Las funciones de la bios como la de imprimir en pantalla palabras, no varian en las distintas bios?, o hay que hacer un programa para cada bios?. 3. (esto si no me lo dicen no pasa nada, ya que ya buscare yo la solucion), como puedo saber que procesador tiene X pc, por ejemplo saber si es un AMD o un INTEL que son los más usados, y como puedo saber los componentes del pc, con asm claro esta. 4. que licencia tiene asm y que restricciones tiene. 5. Como se crea un formato de archivo (no se el nombre tecnico)?, por ejemplo "fat","fat32","fat16","ext2"-3-4 , etc etc, como se generan, y como se pueden implantar en un sistema que no los tiene nativos. Espero que me ayuden y les agradecere muchisimo su ayuda en resolver mis dudas, me estan matando desde hace meses =/ 6. Con que programa o compilar genero el asm?, da igual cual use?. Gracias adelantaras
|
|
|
|
|
|
|