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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: [Error] ld returned 1 exit status, Ayuda soy nuevo en C en: 23 Enero 2015, 08:40 am
No uses espacios en la ruta de los nombres, ahí está tu solución.
2  Programación / Programación C/C++ / Re: Hosting para ejecutar programas c++ en: 20 Enero 2015, 20:03 pm
Los únicos servidores que te permiten este tipo de programas son servidores VPS a los que puedes conectar remotamente por SSH (consola) y tener los servicios que quieras funcionando. Hay de precios variados, no te puedo recomendar ninguno al 100% porque depende de tus necesidades, pero buscar VPS en google debería de arrojar bastantes resultados.
3  Programación / Programación C/C++ / Re: programa en: 20 Enero 2015, 17:04 pm
Quizá no estás pillando bien como funciona Windows Forms. Lo que tienes que hacer es que el ComboBox genere un evento cuando se modifique su valor, de forma que llame a una función como puede ser ComboBox_ValueChanged y ahí podrías comprobar el valor y actualizar el atributo Text de la label de acuerdo al valor introducido. Los eventos deberían de aparecerte en la ventana de "Propiedades" del objeto, como un rayo amarillo, experimenta hasta encontrar el evento necesario.
4  Programación / Programación C/C++ / Re: Acceso FTP -> proteger contraseña de ingeniería inversa en: 18 Enero 2015, 19:26 pm
Ahora veo lo de SFTP pero ahora mismo estaba probando con openssl y se me ocurrió porque no generar una clave, que ya tengo privada y publica, luego cifrar la contraseña con esa clave desde php con openssl_public_encrypt y luego en c++ desencriptarla con alguna librería de ssl teniendo la clave privada guardada en el exe ?

@Edit: He visto que sftp no esta disponible en hostinger así que no creo que sera una alternativa.

Sin soporte SFTP no podrás evitar que la contraseña pase sin cifrar por la red, puesto que a la hora de conectar tendrás que enviarla de forma insegura. Por otro lado, la opción "sencilla" para obtener la contraseña encriptadaa través de https sería:

  • Incrustar una clave pública en el código de tu programa, ofuscándola de alguna forma como en base64, invertiendo la cadena o alterando su orden.
  • Hacer una solicitud a una web PHP que te proporcione la clave cifrada (tendrás que cifrar la contraseña con la clave privada para que luego tu aplicación pueda desencriptarla usando la clave pública)
  • De-ofuscar la clave publica incrustada en tu programa y usarla para descifrar la contraseña que has recibido del web-server (funcionamiento básico de SSL, clave publica descifra lo que cifra la clave privada, y la clave privada descifra lo que cifra la clave pública, más info aquí: http://es.wikipedia.org/wiki/Transport_Layer_Security )
  • Iniciar autenticación FTP (insegura) y relizar las operaciones en cuestión.

Obviamente el problema aquí está en que al conectar al FTP no podrás cifrar la contraseña de ninguna forma puesto que FTP es un protocolo de texto plano simple, como lo es HTTP. La opción "mas segura" sería poder cambiar la contraseña cada vez que se solicita al script PHP y que el servidor FTP la acepte como válida, de forma que harías el trabajo más dificil al RE puesto que tendría que hacer parches en tiempo de ejecución de la aplicación para poder interceptar la contraseña y conectar libremente al FTP.
5  Programación / Programación C/C++ / Re: Acceso FTP -> proteger contraseña de ingeniería inversa en: 16 Enero 2015, 23:41 pm
Si codifico la clave luego para pasar la por el ftp tengo que descifrar la y viaja sin codificar. Quiero implemente https pero no estoy seguro como. Tengo el ftp en un servidor de hostinger gratuito y he leído que con curl se puede con php, es lo que quiero. En plan conectarme al https en un archivo php que me va proporcionar la clave para enviarla al exe que se conectara al ftp. Así ?

Como se hace el https ?

@Edit: Con OpenSLL ?

Buenas noches,

Con usar curl es suficiente para el https, no es necesario implementar el protocolo http desde cero con OPENSSL. FTP tiene una variante (SFTP) que hace que los datos pasen cifrados a través de la conexión. De esa forma te evitas que se vea la contraseña.
6  Programación / Programación C/C++ / Re: Acceso FTP -> proteger contraseña de ingeniería inversa en: 16 Enero 2015, 20:43 pm
Buenos días patilanz,

Puedes ofuscar la contraseña de FTP pero no ocultarla por completo. Las soluciones más rápidas pasan por moldear la cadena, por ejemplo pasarla a base64, invertir la cadena, alterar el orden de los caracteres de acuerdo a un patrón, básicamente lo que se te ocurra. Otra opción sería no almacenar la contraseña en el ejecutable y solicitarla por https por ejemplo a un servidor (añadiendo comprobaciones de certificados, de forma que no puedan poner un proxy "man in the middle"), así además la contraseña pasaría cifrada a tu programa, que luego podría hacer conexiones SFTP para evitar que esta contraseña sea visible por un sniffer.

Otra opción es combinar ambas técnicas, de forma que en memoria solo almacenas la contraseña ofuscada y cuando la vayas a usar la deofuscas, la usas y destruyes la contraseña deofuscada, manteniendo la original, ofuscada en memoria, por lo que requeriría de tecnicas más avanzadas de ingeniería inversa para poder dar con ella.

Ten en cuenta que es posible hacerlo lo más dificil que quieras para el ingeniero inverso, pero nunca podrás evitar que acabe descifrando como obtienes la contraseña y la averigüe, pero para ese entonces tu ya podrías haber cambiado la contraseña (de hecho con el metodo de peticion https sería bastante sencillo cambiar la contraseña periódicamente).

Espero que te haya ayudado,
Almamu.
7  Programación / Programación C/C++ / [AYUDA] Problemas enlazando a SDL en: 16 Enero 2015, 17:17 pm
Estoy trabajando en un proyecto bastante "variado" en cuanto a plataformas se refiere (pretendo compilar para Linux, MacOSX, Windows, NDS y PSP) y estoy trabajando en el sistema de compilación del mismo. Actualmente estoy usando Makefiles para Nintendo DS y Linux y VC ++ 2010 para Windows.

Por lo pronto puedo compilar, sin problemas para Windows y Nintendo DS, obteniendo un ejecutable completamente funcional al final en ambas plataformas. Mi problema viene con Linux.

Como más arriba he indicado, estoy usando Makefiles para la compilación en Linux y Nintendo DS, los Makefiles son bastante similares (basicamente un Makefile y otro son copias con cambios en cosas como librerias, carpetas de inclusión, etc) y en principio están correctos, sin embargo, no consigo que enlace las 3 partes de mi proyecto (libreria base, renderizador y codigo del juego) junto a SDL para generar el binario final.

En mi máquina de desarrollo estoy usando Ubuntu 14.04 y he instalado los paquetes necesarios de SDL 1.2 para desarrollo, de hecho tengo todas las librerias instaladas correctamente, y libSDL.so existe. Estas son las líneas generadas por el Makefile a la hora de generar el código y binario final:

Compilación de la primera librería
Código:
gcc -MMD -MP -MF /home/almamu/Escritorio/smash_tmp/smash/nflib/build/video.d -g -Wall -O2 -fomit-frame-pointer -ffast-math  -I/home/almamu/Escritorio/smash_tmp/smash/nflib/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/win/include  -I/home/almamu/Escritorio/smash_tmp/smash/nflib/build -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -D__UNIXBUILD -Wno-unused-result  -c /home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c -o video.o 

Generacion de la primera libreria estatica
Código:
ar -rc /home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a nf_2d.o nf_3d.o nf_affinebg.o nf_basic.o nf_bitmapbg.o nf_colision.o nf_media.o nf_mixedbg.o nf_sound.o nf_sprite256.o nf_sprite3d.o nf_text16.o nf_text.o nf_tiledbg.o dswifi9.o nitrofs.o debugprint.o console.o keys.o video.o

Compilación de la segunda libreria
Código:
g++ -MMD -MP -MF /home/almamu/Escritorio/smash_tmp/smash/render/build/graphics.d -g -Wall -O2 -fomit-frame-pointer -ffast-math  -I/home/almamu/Escritorio/smash_tmp/smash/render/include -I/home/almamu/Escritorio/smash_tmp/smash/render/win/include -I/home/almamu/Escritorio/smash_tmp/smash/core/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/win/include -I/home/almamu/Escritorio/smash_tmp/smash/render/build -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -D__UNIXBUILD -Wno-unused-result  -fno-rtti -fno-exceptions -std=c++11 -c /home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp -o graphics.o 

Generacion de la segunda libreria estatica
Código:
ar -rc /home/almamu/Escritorio/smash_tmp/smash/render/lib/librender.a graphics.o

Compilacion del codigo fuente del juego
Código:
g++ -MMD -MP -MF /home/almamu/Escritorio/smash_tmp/smash/core/build/strings.d -g -Wall -O2 -fomit-frame-pointer -ffast-math -Wformat=0 -I/home/almamu/Escritorio/smash_tmp/smash/core/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/include -I/home/almamu/Escritorio/smash_tmp/smash/render/include -I/home/almamu/Escritorio/smash_tmp/smash/render/include -I/home/almamu/Escritorio/smash_tmp/smash/render/win/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/include -I/home/almamu/Escritorio/smash_tmp/smash/nflib/win/include -I/home/almamu/Escritorio/smash_tmp/smash/core/build -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -D__UNIXBUILD -fno-rtti -fno-exceptions -fpermissive -std=c++11 -c /home/almamu/Escritorio/smash_tmp/smash/core/source/strings.cpp -o strings.o 

Enlazado de todo el proyecto
Código:
g++  -g  -Wl,-Map,core.map -L/usr/lib/x86_64-linux-gnu -lSDL   assets.o battle.o client.o cmap.o common.o events.o filesystem.o input.o main.o memory.o messages.o mvars.o network.o server.o strings.o   -L/home/almamu/Escritorio/smash_tmp/smash/nflib/lib -L/home/almamu/Escritorio/smash_tmp/smash/render/lib -lrender -lnflib -o /home/almamu/Escritorio/smash_tmp/smash/core/core.elf

Como se puede observar en el enlazado final incluyo todas las librerias necesarias para la compilación del juego, sin embargo, lo único que obtengo son un montón de errores de referencias sin definir que me impiden acabar la compilación del proyecto:
Código:
/home/almamu/Escritorio/smash_tmp/smash/render/lib/librender.a(graphics.o): En la función `R_PrecacheBackground(assetHeader_t*, unsigned char, unsigned char, bool)':
/home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp:492: referencia a `SDL_CreateRGBSurface' sin definir
/home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp:514: referencia a `SDL_CreateRGBSurfaceFrom' sin definir
/home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp:515: referencia a `SDL_UpperBlit' sin definir
/home/almamu/Escritorio/smash_tmp/smash/render/lib/librender.a(graphics.o): En la función `R_UpdateBackground(background_t*)':
/home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp:568: referencia a `SDL_UpperBlit' sin definir
/home/almamu/Escritorio/smash_tmp/smash/render/lib/librender.a(graphics.o): En la función `R_SetBackgroundVisibility(unsigned char, unsigned char, bool)':
/home/almamu/Escritorio/smash_tmp/smash/render/win/source/graphics.cpp:599: referencia a `SDL_FillRect' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a(nf_2d.o): En la función `NF_Set2D(unsigned char, unsigned char)':
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/nf_2d.cpp:31: referencia a `SDL_MapRGB' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/nf_2d.cpp:31: referencia a `SDL_FillRect' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a(nf_tiledbg.o): En la función `NF_ResetTiledBgBuffers()':
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/nf_tiledbg.cpp:98: referencia a `SDL_FreeSurface' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a(keys.o): En la función `scanKeys':
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/keys.c:22: referencia a `SDL_PollEvent' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/keys.c:153: referencia a `SDL_Quit' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/keys.c:22: referencia a `SDL_PollEvent' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a(video.o): En la función `defaultExceptionHandler':
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:75: referencia a `SDL_Init' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:81: referencia a `SDL_SetVideoMode' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:87: referencia a `SDL_EnableUNICODE' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:88: referencia a `SDL_WM_SetCaption' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:94: referencia a `SDL_MapRGB' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:95: referencia a `SDL_SetColorKey' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:102: referencia a `SDL_CreateRGBSurface' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:103: referencia a `SDL_SetColorKey' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:108: referencia a `SDL_CreateRGBSurface' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:111: referencia a `SDL_FillRect' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:112: referencia a `SDL_SetColorKey' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/lib/libnflib.a(video.o): En la función `swiWaitForVBlank':
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:150: referencia a `SDL_UpperBlit' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:163: referencia a `SDL_UpperBlit' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:167: referencia a `SDL_Flip' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:175: referencia a `SDL_FillRect' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:184: referencia a `SDL_GetTicks' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:189: referencia a `SDL_Delay' sin definir
/home/almamu/Escritorio/smash_tmp/smash/nflib/win/source/libnds/nds/arm9/video.c:192: referencia a `SDL_GetTicks' sin definir

Estos son los ficheros de Makefile involucrados en la compilación del proyecto:
Rules.linux
Código:
# --------------------------------------
# COMPILER DEFINITIONS
# --------------------------------------

export MKFILE_PATH = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
export BRANCH_NAME = $(notdir $(patsubst %/,%,$(dir $(MKFILE_PATH))))
export DST_PLATFORM = UNIX
export PLATFORM_DEF = __$(DST_PLATFORM)BUILD

# --------------------------------------
# BINARIES CONFIGURATION
# --------------------------------------

export LIB_EXTENSION = a
export EXE_EXTENSION = out
export OUT_EXTENSION = elf

# --------------------------------------
# SDL config
# --------------------------------------
export SDL_CFLAGS = $(shell sdl-config --cflags)
export SDL_DFLAGS = $(shell sdl-config --libs)

# --------------------------------------
# NFLIB config
# --------------------------------------

export NFLIB_NAME = nflib
export NFLIB_DIR = $(MKFILE_PATH)$(NFLIB_NAME)
export NFLIB_LIB = $(NFLIB_DIR)/lib
export NFLIB_INC = include win/include
export NFLIB_EXTENSION = $(LIB_EXTENSION)

# --------------------------------------
# RENDER config
# --------------------------------------

export RENDER_NAME = render
export RENDER_DIR = $(MKFILE_PATH)$(RENDER_NAME)
export RENDER_INC = include win/include
export RENDER_LIB = $(RENDER_DIR)/lib
export RENDER_EXTENSION = $(LIB_EXTENSION)

# --------------------------------------
# GAME config
# --------------------------------------

export GAME_INC = include
export GAME_NAME = core
export GAME_DIR = $(MKFILE_PATH)$(GAME_NAME)
export GAME_EXTENSION = $(EXE_EXTENSION)

# --------------------------------------
# MAKE util
# --------------------------------------

export MAKE = make -C
export MAKEFILE = Makefile.linux

# --------------------------------------
# BUILD utils
# --------------------------------------
export PREFIX :=
export CC := $(PREFIX)gcc
export CXX := $(PREFIX)g++
export AS := $(PREFIX)as
export AR := $(PREFIX)ar
export OBJCOPY := $(PREFIX)objcopy
export STRIP := $(PREFIX)strip
export NM := $(PREFIX)nm

ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))

ifneq (,$(ISVC))
ERROR_FILTER := 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/g'
endif

# --------------------------------------
# DEBUG utils
# --------------------------------------

# --------------------------------------
# BUILD rules
# --------------------------------------
%.a:
@echo $(notdir $@)
@rm -f $@
$(AR) -rc $@ $^

%.o: %.cpp
@echo $(notdir $<)
$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)

# --------------------------------------
%.o: %.c
@echo $(notdir $<)
$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) -c $< -o $@ $(ERROR_FILTER)

# --------------------------------------
%.o: %.m
@echo $(notdir $<)
$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(OBJCFLAGS) -c $< -o $@ $(ERROR_FILTER)

# --------------------------------------
%.o: %.s
@echo $(notdir $<)
$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)

# --------------------------------------
%.o: %.S
@echo $(notdir $<)
$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)

# --------------------------------------
%.elf:
@echo linking $(notdir $@)
@$(LD)  $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@


Makefile.linux general
Código:
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
# --------------------------------------
# SYSTEM DEFINITIONS
# --------------------------------------

include Rules.linux

# --------------------------------------
# NORMAL MAKE EXECUTION
# --------------------------------------

.PHONY: run debug nflib render clean game omitnflib omitrender cleanrender cleannflib cleangame

all: nflib render game
omitnflib: render game
omitrender: game

# --------------------------------------
# NFLIB COMPILATION
# --------------------------------------

nflib:
@echo NFLIB
@$(MAKE) $(NFLIB_DIR) -f $(MAKEFILE) clean
@$(MAKE) $(NFLIB_DIR) -f $(MAKEFILE)

# --------------------------------------
# RENDER COMPILATION
# --------------------------------------

render:
@echo RENDER
@$(MAKE) $(RENDER_DIR) -f $(MAKEFILE) clean all

# --------------------------------------
# GAME COMPILATION
# --------------------------------------

game:
@echo GAME
@$(MAKE) $(GAME_DIR) -f $(MAKEFILE)

# --------------------------------------
# FULL PROJECT CLEAN
# --------------------------------------

clean: cleanrender cleannflib cleangame

cleanrender:
@$(MAKE) $(RENDER_DIR) -f $(MAKEFILE) clean

cleannflib:
@$(MAKE) $(NFLIB_DIR) -f $(MAKEFILE) clean

cleangame:
@$(MAKE) $(GAME_DIR) -f $(MAKEFILE) clean


# --------------------------------------
# PROJECT TESTING PURPOSES
# --------------------------------------

run: debug

debug:
@$(MAKE) $(GAME_DIR) -f $(MAKEFILE) run

# --------------------------------------
# PROJECT DEBUG UTILS LAUNCHING
# --------------------------------------

addr2line:
@$(A2L) $(A2L_FLAGS)

Makefile.linux de la primera libreria
Código:
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
include $(MKFILE_PATH)Rules.linux

#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
TARGET := $(NFLIB_NAME)
BUILD := build
SOURCES := win/source win/source/libnds win/source/libnds/nds win/source/libnds/nds/arm9
DATA := data
INCLUDES := $(NFLIB_INC)

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
CFLAGS := -g -Wall -O2\
-fomit-frame-pointer -ffast-math \

CFLAGS += $(INCLUDE) -D$(PLATFORM_DEF) -Wno-unused-result
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++11

ASFLAGS := -g $(ARCH)
LDFLAGS = -Wl,-Map,$(notdir $*.map)

#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)

#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT := $(CURDIR)/lib/lib$(TARGET).a

export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))

export DEPSDIR := $(CURDIR)/$(BUILD)

CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------

export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)

export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD) $(SDL_CFLAGS)

.PHONY: $(BUILD) clean all

#---------------------------------------------------------------------------------
all: $(BUILD)

lib:
@[ -d $@ ] || mkdir -p $@

$(BUILD): lib
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/$(MAKEFILE)

#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) lib

#---------------------------------------------------------------------------------
else

DEPENDS := $(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT) : $(OFILES)

#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)


-include $(DEPENDS)

#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

Makefile.linux de la segunda libreria
Código:
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
include $(MKFILE_PATH)Rules.linux

#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
TARGET := $(RENDER_NAME)
BUILD := build
SOURCES := win/source
DATA := data
INCLUDES := $(RENDER_INC)

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
CFLAGS := -g -Wall -O2\
-fomit-frame-pointer -ffast-math \

CFLAGS += $(INCLUDE) -D$(PLATFORM_DEF) -Wno-unused-result
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++11

ASFLAGS := -g $(ARCH)
LDFLAGS = -Wl,-Map,$(notdir $*.map)

#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS) $(GAME_DIR)

#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT := $(CURDIR)/lib/lib$(TARGET).a

export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))

export DEPSDIR := $(CURDIR)/$(BUILD)

CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------

export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)

export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(NFLIB_INC),-I$(NFLIB_DIR)/$(dir)) \
-I$(CURDIR)/$(BUILD) $(SDL_CFLAGS)

.PHONY: $(BUILD) clean all

#---------------------------------------------------------------------------------
all: $(BUILD)

lib:
@[ -d $@ ] || mkdir -p $@

$(BUILD): lib
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/$(MAKEFILE)

#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) lib

#---------------------------------------------------------------------------------
else

DEPENDS := $(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT) : $(OFILES)

#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)


-include $(DEPENDS)

#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

Makefile.linux del codigo del juego (makefile final)
Código:
#---------------------------------------------------------------------------------
# Makefile for NightFox's Lib Projects
# Modified By Almamu
#
# Changelog:
# Support for paths defined from superior Makefiles added
# This should make the compilation more dynamic and easy to maintain
#---------------------------------------------------------------------------------

#---------------------------------------------------------------------------------
# Compilation Options
#---------------------------------------------------------------------------------



#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
include $(MKFILE_PATH)Rules.linux

#---------------------------------------------------------------------------------
%.nds: %.elf
@ndstool -c $@ -9 $< -b $(GAME_ICON) "$(GAME_TITLE);$(GAME_SUBTITLE1);$(GAME_SUBTITLE2)" $(_ADDFILES)
@echo built ... $(notdir $@)

#---------------------------------------------------------------------------------
%.elf:
@echo linking $(notdir $@)
$(LD)  $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@


#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
# DATA is a list of directories containing binary files embedded using bin2o
# GRAPHICS is a list of directories containing image files to be converted with grit
#---------------------------------------------------------------------------------
TARGET := $(GAME_NAME)
BUILD := build
SOURCES := source
INCLUDES := $(GAME_INC)
DATA := data  
GRAPHICS := gfx  
NITRODATA := nitrofiles

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
CFLAGS := -g -Wall -O2 -fomit-frame-pointer\
-ffast-math -Wformat=0

CFLAGS += $(INCLUDE) -D$(PLATFORM_DEF)
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fpermissive -std=c++11

ASFLAGS := -g $(ARCH)
LDFLAGS = -g $(ARCH) -Wl,-Map,$(notdir $*.map) $(SDL_DFLAGS)

#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------

LIBS := -l$(RENDER_NAME) -l$(NFLIB_NAME)
 
 
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS) $(NFLIB_DIR) $(RENDER_DIR)

 
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT := $(CURDIR)/$(TARGET)

export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))

export DEPSDIR := $(CURDIR)/$(BUILD)

ifneq ($(strip $(NITRODATA)),)
export NITRO_FILES := $(CURDIR)/$(NITRODATA)
endif

CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
 
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------

export OFILES := $(addsuffix .o,$(BINFILES)) \
$(addsuffix .o,$(PNGFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
 
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(GAME_DIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(foreach dir,$(RENDER_INC),-I$(RENDER_DIR)/$(dir)) \
$(foreach dir,$(NFLIB_INC),-I$(NFLIB_DIR)/$(dir)) \
-I$(CURDIR)/$(BUILD) $(SDL_CFLAGS)
 
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)

icons := $(wildcard *.bmp)

ifneq (,$(findstring $(TARGET).bmp,$(icons)))
export GAME_ICON := $(CURDIR)/$(TARGET).bmp
else
ifneq (,$(findstring icon.bmp,$(icons)))
export GAME_ICON := $(CURDIR)/icon.bmp
endif
endif
 
.PHONY: $(BUILD) clean
 
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/$(MAKEFILE)
 
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).arm9
  
#---------------------------------------------------------------------------------
else
 
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).nds : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES)
 
#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
$(bin2o)
 
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

La única duda que me asalta (y que básicamente me impide acabar) es el porque la libreria SDL, a pesar de que es enlazada correctamente, sigo teniendo referencias perdidas.

Antes de nada, a quien se tome las molestias de responder, gracias. Llevo varios días con esto y no doy con el problema...
8  Seguridad Informática / Hacking / Re: Sniffear por Internet con una especie de servidor en: 10 Mayo 2010, 20:24 pm
no, para poder sniffar tienes que estar en la misma LAN
Ok, muxas gracias, solo una ultima pregunta. ¿Algun Sniffer para Windows que se pueda iniciar de manera oculta que guarde un archivo cada cierto tiempo de lo lee de la red para luego yo subirlo por FTP en C(por ejemplo)?
9  Seguridad Informática / Hacking / Re: Sniffear por Internet con una especie de servidor en: 6 Mayo 2010, 20:27 pm
¿Se puede Sniffear desde mi red a otra red, por ejemplo de un pueblo de distancia(de mi primo concretamente)?
Lo que dijiste, pues no es mala idea, pero que pasa en windows ?
10  Seguridad Informática / Hacking / Sniffear por Internet con una especie de servidor en: 6 Mayo 2010, 17:05 pm
Me pregunto si sería posible instalar una especie de programa el cual haga Sniff en la red del PC y luego suba el contenido de los paquetes a una web por FTP para así yo poder, más tarde, bajar el contenido de los paquetes. ¿Hay alguna manera mas normal de hacerlo?Eso si, solo lo quiero hacer para aprender(y de paso recuperar mi contraseña de una web que un ex-amigo me robo).

Gracias de antemano
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines