FC2ブログ

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

sceIoDopen関数のフック 

今回は関数のフックのテストを…
※管理人はまだあんまり理解できてないです

M33のSDKを使用するので、まだ導入してない人はCFW4.01のSDKの中の
libとincludeフォルダの中身を自分のに導入しておいてください

今回、必要な関数のNIDが載ってるサイト


#include <pspkernel.h>
#include <pspctrl.h>
#include <systemctrl.h>
#include <pspkerror.h>
#include <string.h>

PSP_MODULE_INFO("Dopen_test", PSP_MODULE_KERNEL, 1, 1);

int main_thread(SceSize args, void *argp);
int sceIoDopen_Patched(const char *dirname);
int module_start(SceSize args, void *argp);
int module_stop(SceSize args, void *argp);

int hide = 1;

int main_thread(SceSize args, void *argp)
{
SceCtrlData pad;

while(1)
{
sceKernelDelayThread(50000);
sceCtrlPeekBufferPositive(&pad, 1);

if(pad.Buttons & PSP_CTRL_RTRIGGER)
{
// 0と1の入れ替え
hide += 1;
hide %= 2;

sceKernelDelayThread(100000);
}
}

return 0;
}

※音楽フォルダを読み込もうとするとエラーを返す
int sceIoDopen_Patched(const char *dirname)
{
if(hide == 1)
{
strcmp(dirname, "ms0:/music") == 0 || strcmp(dirname, "ms0:/MUSIC") == 0)
{
return SCE_KERNEL_ERROR_NOFILE;
}
}

int res = sceIoDopen(dirname);
return res;
}

int module_start(SceSize args, void *argp)
{
    sceIoDopen関数のフック
sctrlHENPatchSyscall(sctrlHENFindFunction("sceIOFileManager",
               "IoFileMgrForUser", 0xB29DDF9C), sceIoDopen_Patched);
sceKernelDcacheWritebackAll();
sceKernelIcacheClearAll();

int thid = sceKernelCreateThread("main_thread", main_thread, 32, 0x1000, 0, NULL);
if(thid >= 0)sceKernelStartThread(thid, args, argp);

return 0;
}

int module_stop(SceSize args, void *argp)
{
    フックしていた関数を元に戻していると思う
sctrlHENPatchSyscall((u32)sceIoDopen_Patched,
        (void *)sctrlHENFindFunction("sceIOFileManager", "IoFileMgrForUser", 0xB29DDF9C));
sceKernelDcacheWritebackAll();
sceKernelIcacheClearAll();

return 0;
}



このプラグインを使うと音楽フォルダが読み込めなくなります
(Rトリガーを押すと読み込めるようにする)

気になったのがPSPでフォルダを参照するとキャッシュ?が残って
もう一回そのフォルダを参照しようとするとそっちを読み込んじゃうんですよね
virtualpbpmgrだっけ?
そのキャッシュ?どうにかやって消せないかな…

スポンサーサイト
コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。