Artikash / Textractor

Extracts text from video games and visual novels. Highly extensible.
GNU General Public License v3.0
2.09k stars 203 forks source link

Can't hook/find hooks for Chaos Dominas #283

Closed ZDTL closed 4 years ago

ZDTL commented 4 years ago

VNDB link Patch applied: 1.01 Engine used: Unity

I tested Textractor 4.8.0 x64 to hook it and even search for hooks but no results were found.

Artikash commented 4 years ago

Please paste the console output.

ZDTL commented 4 years ago
Textractor: pipe connected
Textractor: hijacking process located from 0x00007FF7A3E00000 to 0x00007FF7A3EA4000
Textractor: inserting hook: GetTextExtentPoint32A
Textractor: inserting hook: GetTextExtentExPointA
Textractor: inserting hook: GetCharacterPlacementA
Textractor: inserting hook: GetGlyphIndicesA
Textractor: inserting hook: GetGlyphOutlineA
Textractor: inserting hook: ExtTextOutA
Textractor: inserting hook: TextOutA
Textractor: inserting hook: GetCharABCWidthsA
Textractor: inserting hook: GetCharABCWidthsFloatA
Textractor: inserting hook: GetCharWidth32A
Textractor: inserting hook: GetCharWidthFloatA
Textractor: inserting hook: GetTextExtentPoint32W
Textractor: inserting hook: GetTextExtentExPointW
Textractor: inserting hook: GetCharacterPlacementW
Textractor: inserting hook: GetGlyphIndicesW
Textractor: inserting hook: GetGlyphOutlineW
Textractor: inserting hook: ExtTextOutW
Textractor: inserting hook: TextOutW
Textractor: inserting hook: GetCharABCWidthsW
Textractor: inserting hook: GetCharABCWidthsFloatW
Textractor: inserting hook: GetCharWidth32W
Textractor: inserting hook: GetCharWidthFloatW
Textractor: inserting hook: DrawTextA
Textractor: inserting hook: DrawTextExA
Textractor: inserting hook: TabbedTextOutA
Textractor: inserting hook: GetTabbedTextExtentA
Textractor: inserting hook: DrawTextW
Textractor: inserting hook: DrawTextExW
Textractor: inserting hook: TabbedTextOutW
Textractor: inserting hook: GetTabbedTextExtentW
Textractor: inserting hook: lstrlenA
Textractor: inserting hook: lstrcpyA
Textractor: inserting hook: lstrcpynA
Textractor: inserting hook: lstrlenW
Textractor: inserting hook: lstrcpyW
Textractor: inserting hook: lstrcpynW
Textractor: inserting hook: MultiByteToWideChar
Textractor: inserting hook: WideCharToMultiByte
Textractor: inserting hook: CharNextA
Textractor: inserting hook: CharNextW
Textractor: inserting hook: CharPrevA
Textractor: inserting hook: CharPrevW
Textractor: inserting hook: CharNextExA
Textractor: inserting hook: CharPrevExA
Textractor: inserting hook: SysAllocString
Textractor: inserting hook: SysAllocStringLen
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in SysAllocStringLen
Artikash commented 4 years ago

Thought as much. There should be some .dll files inside the game folder (or subfolders inside that) with the word "mono" in the filename. Could you list them (could be just one)?

ZDTL commented 4 years ago

These are all the mono stuff in the game folder https://files.catbox.moe/kyterp.png

Artikash commented 4 years ago

Are you launching or attaching?

ZDTL commented 4 years ago

I have tried both. I launched in the case of the above console log.

Artikash commented 4 years ago

I'm guessing it inserts the same hooks when attaching?

ZDTL commented 4 years ago

When attached:

Textractor: pipe connected
Textractor: hijacking process located from 0x00007FF6B9550000 to 0x00007FF6B95F4000
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook: Mono Searcher
Textractor: inserting hook:  string:ToCharArray () {00000
Textractor: inserting hook:  string:wstrcpy (char*,char*,
Textractor: inserting hook:  string:Compare (string,strin
Textractor: inserting hook:  string:ToLowerInvariant () {
Textractor: inserting hook:  string:ToLower (System.Globa
Textractor: inserting hook:  (wrapper managed-to-native) 
Textractor: inserting hook:  (wrapper managed-to-managed)
Textractor: inserting hook:  string:CreateString (char,in
Textractor: inserting hook:  string:Format (System.IForma
Textractor: inserting hook:  string:FormatHelper (System.
Textractor: inserting hook:  string:Format (string,object
Textractor: inserting hook:  string:op_Equality (string,s
Textractor: inserting hook:  string:Equals (string,string
Textractor: inserting hook:  string:Replace (string,strin
Textractor: inserting hook:  string:ReplaceInternal (stri
Textractor: inserting hook:  string:ReplaceUnchecked (str
Textractor: inserting hook:  string:Replace (char,char) {
Textractor: inserting hook:  string:ReplaceInternal (char
Textractor: inserting hook:  string:Format (string,object
Textractor: inserting hook:  string:CtorCharArray (char[]
Textractor: inserting hook:  string:Concat (string,string
Textractor: inserting hook:  string:FillStringChecked (st
Textractor: inserting hook:  string:IndexOfAny (char[]) {
Textractor: inserting hook:  string:IndexOfAny (char[],in
Textractor: inserting hook:  string:IndexOfAnyUnchecked (
Textractor: inserting hook:  string:Concat (string,string
Textractor: inserting hook:  string:IsNullOrWhiteSpace (s
Textractor: inserting hook:  string:Trim () {000001B37568
Textractor: inserting hook:  string:TrimHelper (int) {000
Textractor: inserting hook:  string:CreateTrimmedString (
Textractor: inserting hook:  string:Substring (int,int) {
Textractor: inserting hook:  string:InternalSubString (in
Textractor: inserting hook:  string:Split (char[]) {00000
Textractor: inserting hook:  string:SplitInternal (char[]
Textractor: inserting hook:  string:MakeSeparatorList (ch
Textractor: inserting hook:  string:InternalSplitKeepEmpt
Textractor: inserting hook:  string:Substring (int) {0000
Textractor: inserting hook:  string:TrimEnd (char[]) {000
Textractor: inserting hook:  string:Join (string,string[]
Textractor: inserting hook:  string:LastIndexOfAny (char[
Textractor: inserting hook:  string:LastIndexOfAny (char[
Textractor: inserting hook:  string:LastIndexOfAnyUncheck
Textractor: inserting hook:  string:IndexOf (char,int,int
Textractor: inserting hook:  string:CreateStringFromEncod
Textractor: inserting hook:  string:Equals (string) {0000
Textractor: inserting hook:  string:Contains (string) {00
Textractor: inserting hook:  string:IndexOf (string,Syste
Textractor: inserting hook:  string:IndexOf (string,int,i
Textractor: inserting hook:  string:IndexOfUnchecked (str
Textractor: inserting hook:  (wrapper managed-to-managed)
Textractor: inserting hook:  string:CreateString (char[])
Textractor: inserting hook:  string:op_Inequality (string
Textractor: inserting hook:  string:Concat (string,string
Textractor: inserting hook:  string:IndexOf (char) {00000
Textractor: inserting hook:  string:StartsWith (string) {
Textractor: inserting hook:  string:StartsWith (string,Sy
Textractor: inserting hook:  (wrapper managed-to-managed)
Textractor: inserting hook:  string:CreateString (char*,i
Textractor: inserting hook:  string:CtorCharPtrStartLengt
Textractor: inserting hook:  string:EndsWith (string) {00
Textractor: inserting hook:  string:EndsWith (string,Syst
Textractor: inserting hook:  string:IndexOf (string) {000
Textractor: inserting hook:  string:Equals (object) {0000
Textractor: inserting hook:  (wrapper managed-to-managed)
Textractor: inserting hook:  string:CreateString (char[],
Textractor: inserting hook:  string:CtorCharArrayStartLen
Textractor: inserting hook:  string:TrimHelper (char[],in
Textractor: inserting hook:  string:LastIndexOf (char) {0
Textractor: inserting hook:  string:LastIndexOf (char,int
Textractor: inserting hook:  string:CopyTo (int,char[],in
Textractor: inserting hook:  string:CharCopy (char*,char*
Textractor: inserting hook:  string:Concat (object,object
Textractor: inserting hook:  string:IsAscii () {000001B37
Textractor: inserting hook:  string:CompareOrdinalIgnoreC
Textractor: inserting hook:  string:ToString () {000001B3
Textractor: inserting hook:  string:EqualsHelper (string,
Textractor: inserting hook:  string:IndexOfUnchecked (cha
Textractor: inserting hook:  string:GetHashCode () {00000
Textractor: inserting hook:  string:EndsWith (char) {0000
Textractor: inserting hook:  string:LastIndexOfUnchecked 
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  (wrapper managed-to-native) 
Textractor: removing hook:  string:IndexOfAny (char[],in
Textractor: removing hook:  string:IndexOfAnyUnchecked (
Textractor: removing hook:  string:TrimHelper (int) {000
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  (wrapper managed-to-managed)
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CreateString (char[])
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CtorCharArray (char[]
Textractor: removing hook:  string:CreateTrimmedString (
Textractor: removing hook:  string:InternalSubString (in
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  (wrapper managed-to-managed)
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CreateString (char[],
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CtorCharArrayStartLen
Textractor: removing hook:  string:Substring (int,int) {
Textractor: removing hook:  string:IndexOf (string,int,i
Textractor: removing hook:  string:IndexOf (string,Syste
Textractor: removing hook:  string:IndexOfUnchecked (str
Textractor: removing hook:  string:Contains (string) {00
Textractor: removing hook:  string:wstrcpy (char*,char*,
Textractor: removing hook:  string:IndexOfAny (char[]) {
Textractor: removing hook:  string:op_Equality (string,s
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  (wrapper managed-to-managed)
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CreateString (char,in
Textractor: removing hook:  string:Trim () {000001B37568
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:Equals (string,string
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  (wrapper managed-to-managed)
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CreateString (char*,i
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:CtorCharPtrStartLengt
Textractor: removing hook:  string:LastIndexOfAny (char[
Textractor: removing hook:  string:LastIndexOfAny (char[
Textractor: removing hook:  string:LastIndexOfAnyUncheck
Textractor: removing hook:  string:Split (char[]) {00000
Textractor: removing hook:  string:SplitInternal (char[]
Textractor: removing hook:  string:MakeSeparatorList (ch
Textractor: removing hook:  string:InternalSplitKeepEmpt
Textractor: removing hook:  string:Substring (int) {0000
Textractor: removing hook:  string:TrimEnd (char[]) {000
Textractor: removing hook:  string:Equals (string,string
Textractor: removing hook:  string:IsNullOrWhiteSpace (s
Textractor: removing hook:  string:GetHashCode () {00000
Textractor: removing hook:  string:Concat (string,string
Textractor: removing hook:  string:EqualsHelper (string,
Textractor: removing hook:  string:Equals (string) {0000
Textractor: removing hook:  string:FillStringChecked (st
Textractor: removing hook:  string:Concat (string,string
Textractor: removing hook:  string:Join (string,string[]
Textractor: removing hook:  string:ToString () {000001B3
Textractor: removing hook:  string:StartsWith (string,Sy
Textractor: removing hook:  string:StartsWith (string) {
Textractor: removing hook:  string:CharCopy (char*,char*
Textractor: removing hook:  string:EndsWith (string) {00
Textractor: removing hook:  string:EndsWith (string,Syst
Textractor: removing hook:  string:IndexOfUnchecked (cha
Textractor: removing hook:  string:ReplaceInternal (stri
Textractor: removing hook:  string:ReplaceUnchecked (str
Textractor: Send ERROR (likely an incorrect H-code)
Textractor: in  string:FormatHelper (System.
Textractor: removing hook:  string:Compare (string,strin
Artikash commented 4 years ago

Could you try attaching with Textractor 4.7.0?

ZDTL commented 4 years ago

4.7.0 is definitely hooking the text (also adding so many more threads than the 4.8.0 version causing the game to freeze).

Artikash commented 4 years ago

For now I guess use 4.7.0 and remove all hooks except the one that is correctly extracting text. I'll try and think of a better solution (automatic removal of hooks was added in 4.7.1 but looks like it's imperfect).

ZDTL commented 4 years ago

remove all hooks except the one that is correctly extracting text

I am sorry but how do you do this?

Artikash commented 4 years ago

Click Remove hook(s) and double click all other hooks. Yes I know it's terrible. x(

ZDTL commented 4 years ago

Oh mb I never noticed that option. Well that will do for now. Thanks for the help.