Advertisement
fastman92

Mark values as strings in range of addresses.

Mar 8th, 2014
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include <idc.idc>
  2. /*
  3.     Author: fastman92
  4.    
  5.     Description: this script marks values as strings in specified range of addresses (firstAddress, endAddress).
  6.         Useful when there are many string values and you don't want to press 50, 100 or 1000+ times.
  7. */
  8.  
  9. static FindNonZeroByte(curAddress, endAddress)
  10. {
  11.     while(curAddress < endAddress)
  12.     {
  13.         if(Byte(curAddress))
  14.             return curAddress;
  15.         else
  16.             curAddress++;
  17.     }
  18.            
  19.     return BADADDR;
  20. }
  21.  
  22. static main() {
  23.     Message("Setting strings in range!\n");
  24.  
  25.     auto firstAddress = 0x4B6588;
  26.     auto endAddress = 0x4B6C50;
  27.    
  28.     // Loop
  29.     auto curAddress = firstAddress;
  30.    
  31.     while(1)
  32.     {
  33.         curAddress = FindNonZeroByte(curAddress, endAddress);
  34.        
  35.         if(curAddress != BADADDR)
  36.         {
  37.             auto str = GetString(curAddress, -1, ASCSTR_C);
  38.            
  39.             auto l = strlen(str);
  40.            
  41.             MakeStr(curAddress, curAddress + l);
  42.            
  43.             curAddress = curAddress + l;
  44.            
  45.             Message("Marked string on adress: 0x%X Value: %s\n", curAddress, str);
  46.         }
  47.         else
  48.             break;
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement