|
Verfasser |
Nachricht |
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
*push*
Mein plugin funktioniert immer noch nicht -.-
hier der Source:
//
/****************************************************
***** keylogger_plugin *****
***** D3lta, edit: 01.04.2011 *****
***** Version: 0.01 *****
****************************************************/
//includes
#include <pspctrl.h>
#include <pspkernel.h>
#include <stdio.h>
#define logfile "ms0:/plugins/log.txt"
#define filemode "r+"
#define Xbutton "X"
#define Obutton "O"
#define TRIbutton "^"
#define SQUAbutton "[]"
#define LEFT "left"
#define RIGHT "right"
#define DOWN "down"
#define UP "up"
#define Ltrigger "L"
#define Rtrigger "R"
#define START "start"
#define SELECT "select"
#define NOTE "note"
#define SCREEN "screen"
#define VOLUP "vol+"
#define VOLDOWN "vol-"
#define HOLD "hold"
PSP_MODULE_INFO("keylogger", 0x0800, 1, 1);
PSP_HEAP_SIZE_KB(1);
FILE *log;
void writelog(char string[])
{
fprintf(log, string);
fprintf(log, "; ");
}
int keylog()
{
SceCtrlData pad;
log = fopen(logfile, filemode);
int pressed;
sceCtrlReadBufferPositive(&pad, 1);
do
{
if(pad.Buttons & PSP_CTRL_CROSS)
{writelog(Xbutton);}
if(pad.Buttons & PSP_CTRL_CIRCLE)
{writelog(Obutton);}
if(pad.Buttons & PSP_CTRL_SQUARE)
{writelog(SQUAbutton);}
if(pad.Buttons & PSP_CTRL_TRIANGLE)
{writelog(TRIbutton);}
if(pad.Buttons & PSP_CTRL_LEFT)
{writelog(LEFT);}
if(pad.Buttons & PSP_CTRL_RIGHT)
{writelog(RIGHT);}
if(pad.Buttons & PSP_CTRL_UP)
{writelog(UP);}
if(pad.Buttons & PSP_CTRL_DOWN)
{writelog(DOWN);}
if(pad.Buttons & PSP_CTRL_LTRIGGER)
{writelog(Ltrigger);}
if(pad.Buttons & PSP_CTRL_RTRIGGER)
{writelog(Rtrigger);}
if(pad.Buttons & PSP_CTRL_START)
{writelog(START);}
if(pad.Buttons & PSP_CTRL_SELECT)
{writelog(SELECT);}
if(pad.Buttons & PSP_CTRL_NOTE)
{writelog(NOTE);}
if(pad.Buttons & PSP_CTRL_SCREEN)
{writelog(SCREEN);}
if(pad.Buttons & PSP_CTRL_VOLUP)
{writelog(VOLUP);}
if(pad.Buttons & PSP_CTRL_VOLDOWN)
{writelog(VOLDOWN);}
if(pad.Buttons & PSP_CTRL_HOLD)
{writelog(HOLD);}
pressed = pad.Buttons;
do
{sceCtrlReadBufferPositive(&pad, 1);}
while(pressed == pad.Buttons);
}
while(pad.Buttons != PSP_CTRL_HOME);
fprintf(log, "--ENDE--\n");
fclose(log);
return 0;
}
int module_start(SceSize argc, void* argp)
{return 0;}
int module_stop(SceSize argc, void* argp)
{return 0;}
release: all
TARGET = keylogger
OBJS = keylogger.o
INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
USE_KERNEL_LIBS=1
LIBDIR =
LIBS = -lpsplibc -lpspuser
LDFLAGS += -mno-crt0 -nostartfiles
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build_prx.mak
build prx=1
PRX_EXPORTS=keylogger_exp.exp
PSP_BEGIN_EXPORTS
PSP_EXPORT_START(syslib, 0 , 0x8000)
PSP_EXPORT_FUNC(module_start)
PSP_EXPORT_VAR(module_info)
PSP_EXPORT_END
PSP_EXPORT_START(keylogger, 0, 0x0001)
PSP_EXPORT_FUNC(keylog)
PSP_EXPORT_END
PSP_END_EXPORTS
Hoffe mir kann einer helfen...
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
01.04.2011 19:28 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C: Plugin
Wie gesagt, benutze SceIo statt libc.
#define filemode PSP_O_RDWR | PSP_O_CREAT | PSP_O_TRUNC
...
SceUID fd = -1;
...
void writelog(char *string)
{
sceIoWrite(fd, string, strlen(string));
sceIoWrite(fd, "; ", strlen("; "));
}
...
fd = sceIoOpen(logfile, filemode, 0777);
if(fd < 0)
// error
...
sceIoWrite(fd, "--ENDE--\n", strlen("--ENDE--\n"));
sceIoClose(log);
...
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 19:35 von HacKmaN.
|
|
01.04.2011 19:33 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
Ich habe sie erstmal noch nicht verwendet, weil ich dachte, dass es erstmal noch keinen Unterschied macht. Ich wollte sie erst einführen, wenn das plugin funktioniert...
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 19:41 von D3lta.
|
|
01.04.2011 19:38 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C: Plugin
Ich habe sie erstmal noch nicht verwendet, weil ich dachte, dass es erstmal noch keinen Unterschied macht. Ich wollte sie erst einführen, wenn das plugin funktioniert...
mfg D3lta
Verwende möglichst immer die Funktionen, die vom System direkt bereitgestellt werden (z.B. von SceIoFilemgr oder Sysmem).
Es kann sonst oft zu Problemen kommen. Soweit ich weiß, kann man zum Beispiel in Kernel PRXs kein malloc verwenden. Man kann aber stattdessen die Sysmem Funktionen (sceKernelAllocPartitionMemory/sceKernelGetBlockHeadAddr/sceKernelFreePartitionMemory) benutzen.
Wenn du also dein Plugin schnell mal von einem User zu nem Kernel Modul machen möchtest (oder umgekehrt), solltest du die systeminternen Funktionen benutzen. Ansonsten kannes sehr viel unnötige Arbeit schaffen
Und ehrlich, man gewöhnt sich dran. Ich benutze inzwischen (auf der PSP) nur noch systeminterne Funktionen, keine libc mehr.
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 19:43 von HacKmaN.
|
|
01.04.2011 19:42 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
Ich bin halt noch kein pro
Ok, dann tausche ich mal die Funtionen aus...
mfg D3lta
EDIT: Kann man, wenn man eine eigene makefile einbindet, mit Dev-C++ für die PSP kompilieren?
"Linux is like a tent, no windows, no gates and an apache inside."
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 19:54 von D3lta.
|
|
01.04.2011 19:51 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
Ich bin halt noch kein pro
Ok, dann tausche ich mal die Funtionen aus...
mfg D3lta
EDIT: Kann man, wenn man eine eigene makefile einbindet, mit Dev-C++ für die PSP kompilieren?
EDIT2: Der log ist immer noch leer...
@HacKmaN:
Wie gesagt, benutze SceIo statt libc.
muss es heißen
"Linux is like a tent, no windows, no gates and an apache inside."
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 20:14 von D3lta.
|
|
01.04.2011 20:13 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C: Plugin
Wird die Funktion von einem anderen Modul aus aufgerufen? Ansonsten kann es gar nicht funktionieren, weil keylog nicht aufgerufen wird^^
Die Frage von Dev-C++ kann ich nicht beantworten, ich weiß es nicht. Ich finde die Kombination Notepad++ und Minpspw sowieso besser. Falls du umbedingt n' IDE willst, kannst du auch Microsoft Visual Studeo C++ verwenden.
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 20:17 von HacKmaN.
|
|
01.04.2011 20:16 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
Ich verwende Dev-C++ und MinPSP...
Ich habe das Modul in die vsh.txt eingetragen und der log füllt sich nicht...
Gibt es zwischen den in Programmen geladenen Modulen und plugins unterschiede??
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
01.04.2011 20:25 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C: Plugin
Ich verwende Dev-C++ und MinPSP...
Ich habe das Modul in die vsh.txt eingetragen und der log füllt sich nicht...
Gibt es zwischen den in Programmen geladenen Modulen und plugins unterschiede??
mfg D3lta
Logisch, dass sich der Log nicht füllt, wenn deine Hauptfunktion nicht aufgerufen wird^^
Ruf die Funktion von module_start aus auf, dann wirds funktionieren
|
|
01.04.2011 20:34 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: C: Plugin
Er tut es immer ncoh nicht -.-
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
01.04.2011 20:44 |
|
|
|
|