Otogelib Posted July 9, 2021 Posted July 9, 2021 Here's a demo video of a new text hooker/visual novel translator named Agent, developed by [DC] (Otogelib's main programmer and romhacker). With this tool, you can pretty much read every Japanese visual novel/otome game on any platform using machine translation. It works with emulators like PPSSPP/Yuzu and of course normal PC Games etc... You can code your own script for it to support the game you want. Tool download: https://github.com/0xDC00/agent Worked on Cupid Parasite played with Yuzu newest version: Quote
Clephas Posted July 9, 2021 Posted July 9, 2021 If it works on games where the drm is the major obstacle to text-hooking, it might be worth the trouble. However, at present its methodology is too clunky. Edit: To be specific, the need to utilize Cheat Engine is annoying to the extreme, if only because I have to fight off my antivirus while it is working. Edit2: The main reason I was curious was to see if the Steam version of the Silverio series could be hooked using it. However, I tested it with another game first, and it annoyed the hell out of me as I did. While all text hookers are somewhat obtrusive, this one requires way too much work to set up, unless you intend to just leave your pc on until you've finished the game, which is impractical sometimes. In the future, the maker should think about integrating the search function instead of outsourcing it to Cheat Engine and its fellows, which are almost all labeled as malware by standard antivirus programs (thus necessitating even more workarounds and making exceptions). Edit3: The answer is no, it doesn't work. Apparently the heavy DRM issue from Steam and DMM is universal for preventing text-hooking. Quote
Otogelib Posted July 18, 2021 Author Posted July 18, 2021 On 7/10/2021 at 2:19 AM, Clephas said: If it works on games where the drm is the major obstacle to text-hooking, it might be worth the trouble. However, at present its methodology is too clunky. Edit: To be specific, the need to utilize Cheat Engine is annoying to the extreme, if only because I have to fight off my antivirus while it is working. Edit2: The main reason I was curious was to see if the Steam version of the Silverio series could be hooked using it. However, I tested it with another game first, and it annoyed the hell out of me as I did. While all text hookers are somewhat obtrusive, this one requires way too much work to set up, unless you intend to just leave your pc on until you've finished the game, which is impractical sometimes. In the future, the maker should think about integrating the search function instead of outsourcing it to Cheat Engine and its fellows, which are almost all labeled as malware by standard antivirus programs (thus necessitating even more workarounds and making exceptions). Edit3: The answer is no, it doesn't work. Apparently the heavy DRM issue from Steam and DMM is universal for prevent The main feature of the program is using javascript to hook the text of the game you want, the cheat engine method is only for ppl w/ zero programming experience. For me, I'm grateful for this bc it can hook text from emulators as well. It does work, idk abt drm games but it works on pretty much all games. Please don't say that it doesn't work. Quote
Clephas Posted July 18, 2021 Posted July 18, 2021 35 minutes ago, Otogelib said: The main feature of the program is using javascript to hook the text of the game you want, the cheat engine method is only for ppl w/ zero programming experience. For me, I'm grateful for this bc it can hook text from emulators as well. It does work, idk abt drm games but it works on pretty much all games. Please don't say that it doesn't work. Never said the program doesn't work for other things, but it doesn't work for games protected by drm. It takes work, but it works fine with other stuff. Quote
Zakamutt Posted July 18, 2021 Posted July 18, 2021 what makes this different from Hook Any Text? adamstan 1 Quote
adamstan Posted July 18, 2021 Posted July 18, 2021 (edited) 13 minutes ago, Zakamutt said: what makes this different from Hook Any Text? Yeah, exactly. I see no advantages at all this Agent would have over Cheat Engine & HAT combo - especially since you still have to fire up Cheat Engine to search for memory address. The only difference is, that it generates hex encoded version of text from OCR. Edited July 18, 2021 by adamstan Quote
0xDC00 Posted July 19, 2021 Posted July 19, 2021 (edited) Hi, Agent author here. Agent shipped with two scripts: _MemoryWatch.js & _ExecutionWatch.js _MemoryWatch.js look like HAT? => It's look like R-Code too, but I think _MemoryWatch work better (just ~90 line of code). _ExecutionWatch.js, D-COCE look like H-CODE (textractor, VNR)? => _ExecutionWatch support both PC and emulator. (D-CODE wiki). If you don't like CheatEngine, please try this script. Yeah, the main feature is a text hooker. The difference: - Agent is script based, configless. - Agent have no limitation (for complex game (custom encoding,...DRM?), just write a custom script - developer). Edited July 19, 2021 by 0xDC00 typo adamstan 1 Quote
adamstan Posted July 19, 2021 Posted July 19, 2021 Oh, the version I downloaded few days ago, didn't have the ExecutionWatch script, just two versions of Memory Watch - and Memory Watch does essentially the same what Cheat Engine would do. But that ExecutionWatch looks more interesting, and perhaps even promising. Quote
adamstan Posted July 19, 2021 Posted July 19, 2021 (edited) By the way, @0xDC00, would it be possible to use that second script to hook something like PSP version of Princess Evangile? It's engine is a bit weird, and MemoryWatch methods (including Cheat Engine and Textractor) don't work with it, because it doesn't store currently displayed text at fixed memory area. Instead it loads up big chunks of script - or perhaps even whole - and then seems to render directly from that storage area. So whenever you find currently displayed line in the memory - it will be always that line under that address - no change, and each subsequent line is read from different address. Edited July 19, 2021 by adamstan Quote
0xDC00 Posted July 19, 2021 Posted July 19, 2021 @adamstan Sure. https://youtu.be/ufXbuZBAjes?list=PLTZXVVG9AT6TATy_7ey3jUkE0g35t3xtk DCODE: (please check the wiki if the code below doesn't work.) $utf16,2|50|0000,46??????????45??????F3??????????F3??????????41 adamstan 1 Quote
adamstan Posted July 19, 2021 Posted July 19, 2021 Thanks - now you gave me good reason to add your tool to my hooking arsenal Quote
adamstan Posted July 21, 2021 Posted July 21, 2021 (edited) @0xDC00Sadly, I'm still unable to hook PE Portable. The D-code you provided doesn't work for me. I guess it's caused by the fact that this game (as well as many other PSP ones) seem to load into different memory area on each boot. For example, for the first two lines of text, I get following results: At first run: 132E7F80132E7F8E Then, after restarting the emu: 122E7F80122E7F8E And in the third run: 12EE7F8012EE7F8E So, as you can see, it's at different initial offset each time - three most significant nibbless of the address keep changing at each run. Also, the guide for finding D-code seems a bit unclear to me, I have trouble following it. BTW - could I perhaps ask you for the D-Code for PS3 version of '&' - Sora no Mukou de Sakimasu you ni ? (BLJM61131) From my experience, contrary to PSP games, PS3 ones seem to mostly use fixed address space. Edited July 21, 2021 by adamstan Quote
0xDC00 Posted July 21, 2021 Posted July 21, 2021 @adamstan 4 hours ago, adamstan said: it's at different initial offset each time DCODE is designed to solve that problem (fixed aka static or dynamic doesn't matter). Maybe the JIT'd code on your machine is different from mine. What your ppsspp version? please try latest version, 1.11.3+: https://buildbot.orphis.net/ppsspp/index.php Quote
adamstan Posted July 21, 2021 Posted July 21, 2021 1 hour ago, 0xDC00 said: DCODE is designed to solve that problem (fixed aka static or dynamic doesn't matter). Maybe the JIT'd code on your machine is different from mine. What your ppsspp version? please try latest version, 1.11.3+: https://buildbot.orphis.net/ppsspp/index.php I updated the PPSSPP. It still didn't worked, but then I noticed I've been running 32bit version. When trying to use your D-code, it would just repeatedly ask for it again and again. However, when I tried 64bit PPSSPP, the Agent has accepted the code, but it doesn't seem to grab the text. Here's the result: Quote
0xDC00 Posted July 22, 2021 Posted July 22, 2021 @adamstan Hmm, my DCODE (x64) contain some SSE register (xmm*), what is your processor? Tutorial (without DCODE): Note: exit CE or CE -> open PPSSPP again to disable CE debugger. adamstan 1 Quote
adamstan Posted July 22, 2021 Posted July 22, 2021 Thanks, I will try it out when I get back from work 46 minutes ago, 0xDC00 said: what is your processor? It's 4th generation i5 (I don't remember exact model number now) Quote
adamstan Posted July 22, 2021 Posted July 22, 2021 10 hours ago, 0xDC00 said: Tutorial (without DCODE): Sadly, still no good I found address of the instruction you showed in your tutorial: But when I press the button to advance to the next line, PPSSPP freezes, and Agent falls into endless loop: Also, I noticed that addresses I'm getting from CheatEngine have only 9 digits, while yours have 12, but I'm not sure what it means. Quote
0xDC00 Posted July 22, 2021 Posted July 22, 2021 @adamstan That's weird!, please show me your results from find out what access this address window. Quote
adamstan Posted July 22, 2021 Posted July 22, 2021 The instruction looked like this: 13C53DEBB - 46 0FB7 44 0B 00 - movzx r8d,word ptr [rbx+r9+00] << And as for full screenshot from CE window: Of course this time addresses are different (apart from two LSB) since this screenshot is from different run. Quote
0xDC00 Posted July 22, 2021 Posted July 22, 2021 Try this: https://drive.google.com/file/d/1cGzRnhufGTvJm9MY3QCV4HMUQS759A-I/ Quote
adamstan Posted July 23, 2021 Posted July 23, 2021 (edited) 14 hours ago, 0xDC00 said: Try this: https://drive.google.com/file/d/1cGzRnhufGTvJm9MY3QCV4HMUQS759A-I/ I tried. It still crashed, but this time instead of just "onEnter", it displayed this: And when trying D-code you found first, I get following output: Pattern: 46??????????45??????F3??????????F3??????????41 [Pattern] no result! ***** UPDATE **** The crash above happened on 64bit PPSSPP, but tt worked on 32bit PPSSPP! Edited July 23, 2021 by adamstan Quote
0xDC00 Posted July 23, 2021 Posted July 23, 2021 @adamstan Hmm, JIT optimization problem. My solution (in video) may not work on other operating systems or processors. x64, maybe the 2nd address will work (just try each address). Btw, I created a discord server, so people can help each other: https://discord.gg/cdmSkXR7j8 PS: Terminated for this game is 0000 (instead 000?) Quote
adamstan Posted July 24, 2021 Posted July 24, 2021 (edited) 7 hours ago, 0xDC00 said: My solution (in video) may not work on other operating systems or processors. I did some more tests, and it seems, that on my system situation with ExecutionWatch is as follows: On 32bit PPSSPP the address mode works, as demonstrated above, but Pattern/Signature/D-Code doesn't - it always gives back "no result", even though I think I created correct signature. On 64bit applications - PPSSPP and rpc3 (PS3 Emulator) it keeps crashing, with the endless loop of "OnEnter <address>" messages - both in address mode and in pattern mode. I have i5-4570 CPU, 8GB of RAM, and I'm running Windows 7 Home Premium 64 bit. Edited July 24, 2021 by adamstan Quote
0xDC00 Posted July 24, 2021 Posted July 24, 2021 @adamstan Hmm, maybe the core buggy on windows 7. Please test: - test 1: https://drive.google.com/file/d/1a3NaP5QKc1z7NXuPdNXc2jq-ibBDwpYw/ - test 2: https://drive.google.com/file/d/1M9fMfS-k5EJFdgRCO_e6j0vJEbEOD974/ Quote
adamstan Posted July 26, 2021 Posted July 26, 2021 (edited) On 7/24/2021 at 3:23 PM, 0xDC00 said: @adamstan Hmm, maybe the core buggy on windows 7. Please test: - test 1: https://drive.google.com/file/d/1a3NaP5QKc1z7NXuPdNXc2jq-ibBDwpYw/ - test 2: https://drive.google.com/file/d/1M9fMfS-k5EJFdgRCO_e6j0vJEbEOD974/ I had pretty busy weekend, so I could do just some quick tests - and there is some progress. On "test 2" version address mode worked on PPSSPP 64, but it still crashed in pattern mode. And I still couldn't make it work with rpc3 - it also crashed, both in address and in pattern modes. I'll try it with a different game - maybe the one I'm trying to hook (PS3 version of '&' - Sora no Mukou de Sakimasu you ni -) is extremely tricky? Edited July 26, 2021 by adamstan Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.