Ledger Nano X - The secure hardware wallet
SHARE
TWEET

Untitled

a guest Jun 10th, 2012 376 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Windows.h>
  2. #include <stdio.h>
  3.  
  4. DWORD   GObjObjects_offset              = 0x01500FB8;
  5. DWORD   Names_offset                    = 0x014BECA8;
  6. DWORD   Offset_Name                             = 0x2C;
  7.  
  8. template < class T > struct TArray
  9. {
  10.         T*              Data;
  11.         DWORD   Num;
  12.         DWORD   Max;
  13. };
  14.  
  15. struct UObject
  16. {
  17.         UCHAR   Unknown         [ 0x2C ];       // unknowed data
  18.         DWORD   NameIndex;                              // struct FName
  19. };
  20.  
  21. struct FNameEntry
  22. {
  23.         UCHAR   Unknown         [ 0x10 ];       // unknowed data
  24.         char    Name            [ 1 ];          // name
  25. };
  26.  
  27. // Objects and Names arrays
  28. TArray< UObject* >*             GObjObjects = ( TArray< UObject* >* )           GObjObjects_offset;             // global objects
  29. TArray< FNameEntry* >*  Names           = ( TArray< FNameEntry* >* )    Names_offset;                   // global names
  30.  
  31. // funcs
  32. PCHAR GetName ( UObject* Object )
  33. {
  34.         DWORD NameIndex = *(PDWORD) ( (DWORD) Object + Offset_Name );
  35.  
  36.         //DWORD NameIndexFix = NameIndex * 3;
  37.  
  38.         if ( NameIndex < 0 || NameIndex > Names->Num )
  39.         {
  40.                 static char ret[256];
  41.                 sprintf_s ( ret, "INVALID NAME INDEX : %i > %i", NameIndex, Names->Num );
  42.                 return ret;
  43.         }
  44.         else
  45.         {
  46.                 //return Names->Data[ NameIndexFix ]->Name;
  47.                 return Names->Data[ NameIndex ]->Name;
  48.         }
  49. }
  50.  
  51. void ObjectDump()
  52. {
  53.         // log file
  54.         FILE* Log = NULL;      
  55.         fopen_s ( &Log, "ObjectDump.txt", "w+" );
  56.        
  57.         for ( DWORD i = 0x0; i < GObjObjects->Num; i++ )
  58.         {
  59.                 // check if it's a valid object
  60.                 if ( ! GObjObjects->Data[ i ] ) { continue; }
  61.                
  62.                 // log the object
  63.                 fprintf ( Log, "UObject[%06i] %-50s 0x%X\n", i, GetName ( GObjObjects->Data[ i ] ), GObjObjects->Data[ i ] );
  64.         }
  65.  
  66.         // close log
  67.         fclose ( Log );
  68. }
  69.  
  70. void NameDump()
  71. {
  72.         // log file
  73.         FILE* Log = NULL;      
  74.         fopen_s ( &Log, "NameDump.txt", "w+" );
  75.        
  76.         //for ( DWORD i = 0x0; i < Names->Num; i += 0x3 )
  77.         for ( DWORD i = 0x0; i < Names->Num; i++ )
  78.         {
  79.                 // check if it's a valid object
  80.                 if ( ! Names->Data[ i ] ) { continue; }
  81.                
  82.                 // log the object
  83.                 fprintf ( Log, "Name[%06i] %s\n", i, Names->Data[ i ]->Name );
  84.         }
  85.  
  86.         // close log
  87.         fclose ( Log );
  88. }
  89.  
  90. void onAttach()
  91. {      
  92.         //Sleep ( 60000 );
  93.  
  94.         NameDump();
  95.         ObjectDump();
  96. }
  97.  
  98. // entry point
  99. BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
  100. {
  101.         switch ( dwReason )
  102.         {
  103.                 case DLL_PROCESS_ATTACH:
  104.                         DisableThreadLibraryCalls ( hModule );
  105.                         CreateThread ( NULL, 0, ( LPTHREAD_START_ROUTINE ) onAttach, NULL, 0, NULL );
  106.                         return true;
  107.                 break;
  108.  
  109.                 case DLL_PROCESS_DETACH:
  110.                         return true;
  111.                 break;
  112.         }
  113. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top