├── LICENSE ├── README.md └── win32 ├── Corelan_HeapLog ├── Corelan_HeapLog.cpp ├── Corelan_HeapLog.opensdf ├── Corelan_HeapLog.sdf ├── Corelan_HeapLog.sln ├── Corelan_HeapLog.v11.suo ├── Corelan_HeapLog.vcxproj ├── Corelan_HeapLog.vcxproj.filters ├── Debug │ ├── CL.read.1.tlog │ ├── CL.write.1.tlog │ ├── Corelan_HeapLog.Build.CppClean.log │ ├── Corelan_HeapLog.dll │ ├── Corelan_HeapLog.exp │ ├── Corelan_HeapLog.lastbuildstate │ ├── Corelan_HeapLog.lib │ ├── Corelan_HeapLog.log │ ├── Corelan_HeapLog.obj │ ├── Corelan_HeapLog.pdb │ ├── Corelan_HeapLog.write.1.tlog │ ├── cl.command.1.tlog │ ├── link.command.1.tlog │ ├── link.read.1.tlog │ ├── link.write.1.tlog │ └── vc110.pdb ├── makefile └── makefile.rules └── createpintool.py /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Corelan GCV 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of pin nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pin 2 | Collection of pin tools 3 | 4 | 5 | ## General information 6 | 7 | Unless stated otherwise, all pin tools were created with Visual Studio 2012 Express, and written in C++ 8 | You can download Visual Studio Express 2012 for Windows Desktop here: https://www.microsoft.com/en-us/download/details.aspx?id=34673 9 | 10 | To download & install the corresponding version of Pin, check this link: 11 | https://software.intel.com/en-us/articles/pintool-downloads 12 | 13 | 14 | ## Creating a new Pin project folder for use with Visual Studio 15 | 16 | This repository contains a simple python script `createpintool.py` that allows you to create a new Visual Studio project folder, based on the "MyPinTool" example folder. 17 | You can find the script in the `win32` folder in this repository. 18 | 19 | Place the script into the source/tools folder inside your pin folder structure. 20 | Run the script from that working folder, and specify the name of the new project. 21 | 22 | Example: 23 | ``` 24 | C:\pin\vc11\source\tools>python createpintool.py MyNewProjectName 25 | [+] Creating new PIN project MyNewProjectName 26 | - Copying clean project 27 | [+] Updating project files 28 | - Processing makefile -> makefile 29 | - Processing makefile.rules -> makefile.rules 30 | - Processing MyPinTool.cpp -> MyNewProjectName.cpp 31 | - Processing MyPinTool.vcxproj -> MyNewProjectName.vcxproj 32 | - Processing MyPinTool.vcxproj.filters -> MyNewProjectName.vcxproj.filters 33 | [+] Done 34 | ``` 35 | 36 | 37 | ## Notes 38 | 39 | 1. For Visual Studio C++ 2012, you need vc11, not vc12! 40 | 2. You may have to disable SAFESEH. 41 | 3. All pintools must be considered "proof of concept" and come without any warranty whatsoever. The pintools have only been tested in a very small number of situations and may not work on your system. I do, however, encourage everyone to improve the code, performance, stability and/or submit Pull Requests to add interesting functionality. 42 | 4. I have compiled all pin tools in "Debug" mode. 43 | 5. If your pin tool doesn't run (i.e. if it terminates almost immediately after launching it), launch pin with the `-xyzzy -mesgon log_win` options, to activate some verbose logging. A file `pintool.log` will be created in case of C++ errors. 44 | 6. The Corelan_HeapLog pin tool doesn't always end up launching the process. Especially with apps that spawn a lot of threads (IE, etc), I've been seeing weird errors in pintool.log. (Something like `E:Unexpected memory deallocation request of aligned memory`. Not sure what to do with it or how to fix it. Pin bug ?). 45 | 7. Remove *.log files before running the Corelan_HeapLog pin tool again. Also, make sure any relevant previous processes are killed before launching a new pin instance. 46 | 8. Pin may continue to write output to the log file(s) even after the instrumented process looks like it's gone. Wait for all processes to properly finish & terminate before accessing log files. 47 | 9. I wrote this pintool in just a few days, after spending about a week studying C++ basics from Bjarne Stroustrup's books. I am fully aware my code can be optimized etc. I will update/improve as I learn how to write better code. 48 | 49 | ## Available pintools in this repository 50 | 51 | ### 1. Corelan_HeapLog 52 | This pintool allows you to log all calls to RtlAllocateHeap, RtlReAllocateHeap, VirtualAlloc and RtlFreeHeap.
53 | Output is written to `corelan_heaplog.log`, unless you have specified the `-splitfiles 1` option. This option will tell the pin tool to store output into `corelan_heaplog_.log` files instead (Fresh file for every process) 54 | By default, output will be appended to `corelan_heaplog.log`. (In other words, make sure to put the file aside if you're instrumenting a different app)
55 | Exceptions are written to `corelan_heaplog_exception.log`. (One file, exceptions are appended to this file) 56 | 57 | You can specify a couple of command line options:
58 | `-logalloc ` : enable or disable logging allocations by setting value to 1 or 0
59 | `-logfree ` : enable or disable logging free operations by setting value to 1 or 0
60 | `-timestamp ` : enable or disable showing timestamp of heap operation by setting value to 1 or 0
61 | `-splitfiles ` : enable or disable splitting output files into files that contain reference to the PID. Set value to 1 or 0
62 | `-silent ` : enable or disable writing allocs and frees to output file(s). Set value to 1 or 0
63 | `-bufferoutput `: enable or disable buffering output to memory before writing to disk. Set value to 1 or 0
64 | Both log settings are enabled by default.
65 | Timestamp is disabled by default (as it may slow down the process a tiny little bit).
66 | The splitfiles option is disabled by default.
67 | The silent option is disabled by default. Enabling this option will speed up the process (as the cost of writing entries to file will be gone). Of course, this only makes sense if you're only interested in seeing the exception context.
68 | The bufferoutput option is enabled by default.
69 | If you are logging alloc and free operations, then this pintool will attempt to detect double free situations.
70 | 71 | The pintool *should* be capable of instrumenting child processes, provided that you have specified the `-follow-execv` pin command line option. 72 | 73 | Example:
74 | ```C:\pin\vc11>pin -follow-execv -t c:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.dll -timestamp 1 -logfree 0 -splitfiles 0 -- "c:\Program Files (x86)\Internet Explorer\iexplore.exe" http://127.0.0.1:8080/blah.html``` 75 | 76 | Example output of corelan_heaplog_exception.log:
77 | ``` 78 | PID 3000 | Exception context: 79 | EIP: 0x61EDE1CB (C:\Windows\SysWOW64\mshtml.dll) 80 | EAX: 0x160AAFA8 rtlallocateheap(0x144) rtlfreeheap(0x144) rtlallocateheap(0x58) rtlfreeheap(0x58) 81 | EBX: 0x13346F30 rtlallocateheap(0xd0) 82 | ECX: 0x00000052 83 | EDX: 0x00000000 84 | EBP: 0x0B79D6C4 85 | ESP: 0x0B79D670 86 | ESI: 0x00000000 87 | EDI: 0x160AAFA8 rtlallocateheap(0x144) rtlfreeheap(0x144) rtlallocateheap(0x58) rtlfreeheap(0x58) 88 | 89 | Closing exception log file for PID 3000 90 | ############## EOF 91 | ``` 92 | If a register contains a value that belongs to a heap chunk, Corelan_HeapLog will show all heap related operations (alloc & free) for that chunk in chronological order.
93 | This should make it easier to detect Use After Free cases (i.e. use of a chunk that has been freed. See example output, EAX & EDI)
94 | Hint: if you're interested in finding UAF, don't forget to enable full page heap mode (+hpa) first for the process that you're going to instrument. -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.cpp: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | This simple pin tool allows you to trace/log Heap related operations 4 | written by corelanc0d3r 5 | www.corelan.be 6 | 7 | Copyright (c) 2015, Corelan GCV 8 | All rights reserved. 9 | 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | 13 | * Redistributions of source code must retain the above copyright notice, this 14 | list of conditions and the following disclaimer. 15 | 16 | * Redistributions in binary form must reproduce the above copyright notice, 17 | this list of conditions and the following disclaimer in the documentation 18 | and/or other materials provided with the distribution. 19 | 20 | * Neither the name of pin nor the names of its 21 | contributors may be used to endorse or promote products derived from 22 | this software without specific prior written permission. 23 | 24 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 28 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 32 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 | 35 | */ 36 | 37 | #include "pin.H" 38 | namespace WINDOWS 39 | { 40 | #include 41 | } 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | 49 | /* ================================================================== */ 50 | // Global variables 51 | /* ================================================================== */ 52 | 53 | 54 | BOOL LogAlloc = true; 55 | BOOL LogFree = true; 56 | BOOL ShowTimeStamp = false; 57 | BOOL SplitFiles = false; 58 | BOOL StaySilent = false; 59 | BOOL BufferOutput = true; 60 | TLS_KEY alloc_key; 61 | FILE* LogFile; 62 | FILE* ExceptionLogFile; 63 | std::map chunksizes; // used to collect info from all threads 64 | std::map mapFree; // used to remember all frees and the SRP 65 | PIN_LOCK lock; 66 | int nrLogEntries = 0; 67 | 68 | /* ================================================================== */ 69 | // Function declarations 70 | /* ================================================================== */ 71 | 72 | void saveToLog(FILE*, const char * fmt, ...); 73 | 74 | 75 | /* ================================================================== */ 76 | // Classes 77 | /* ================================================================== */ 78 | 79 | class CLogEntry{ 80 | public: 81 | // constructor 82 | CLogEntry(FILE* LogF, std::string entrystr) 83 | { 84 | LogFileRef = LogF; 85 | entry = entrystr; 86 | } 87 | 88 | FILE* getLogFile() 89 | { 90 | return LogFileRef; 91 | } 92 | 93 | string getEntry() 94 | { 95 | return entry; 96 | } 97 | 98 | private: 99 | FILE* LogFileRef; 100 | std::string entry; 101 | }; 102 | 103 | vector arrOutputBuffer; 104 | 105 | 106 | 107 | class CModuleImage 108 | { 109 | public: 110 | // constructor 111 | CModuleImage(IMG thisimage) 112 | { 113 | ImageName = IMG_Name(thisimage); 114 | ImageEnd = IMG_HighAddress(thisimage); 115 | ImageBase = IMG_LowAddress(thisimage); 116 | } 117 | 118 | void save_to_log() 119 | { 120 | saveToLog(LogFile, "** Module loaded at 0x%p - 0x%p : %s **\n", ImageBase, ImageEnd, ImageName); 121 | } 122 | 123 | string getName() 124 | { 125 | return ImageName; 126 | } 127 | 128 | ADDRINT getBase() 129 | { 130 | return ImageBase; 131 | } 132 | 133 | ADDRINT getEnd() 134 | { 135 | return ImageEnd; 136 | } 137 | 138 | private: 139 | string ImageName; 140 | ADDRINT ImageBase; 141 | ADDRINT ImageEnd; 142 | }; 143 | 144 | 145 | class CHeapOperation 146 | { 147 | public: 148 | string operation_type; 149 | ADDRINT chunk_start; 150 | WINDOWS::DWORD chunk_size; 151 | ADDRINT chunk_end; 152 | ADDRINT saved_return_pointer; 153 | string srp_imagename; 154 | time_t operation_timestamp; 155 | 156 | // constructor, only used to initialize private var currentpid 157 | CHeapOperation(bool is_this_an_alloc) 158 | { 159 | currentpid = PIN_GetPid(); 160 | isalloc = is_this_an_alloc; 161 | } 162 | 163 | // member functions to perform check on current address 164 | void check_addy() 165 | { 166 | // it doesn't make sense to analyze if we're not tracking data in the first place 167 | if (LogAlloc && LogFree) 168 | { 169 | // is this an alloc or free ? 170 | if (isalloc) 171 | { 172 | // alloc 173 | // try to remove item from freelist. Doesn't matter if item doesn't exist yet 174 | try 175 | { 176 | mapFree.erase(chunk_start); 177 | } 178 | catch ( ... ) 179 | { 180 | saveToLog(LogFile,"***Exception: Unable to remove element from free list\n"); 181 | } 182 | } 183 | else 184 | { 185 | // free 186 | // if item is already in free list, then log this as a double free 187 | if (mapFree.find( chunk_start ) != mapFree.end()) 188 | { 189 | saveToLog(LogFile, "PID: %u >>> Double Free of 0x%p from 0x%p (%s) <<<\n", currentpid, chunk_start, saved_return_pointer, srp_imagename); 190 | } 191 | else 192 | { 193 | // add to map 194 | try 195 | { 196 | mapFree[chunk_start] = saved_return_pointer; 197 | } 198 | catch ( ... ) 199 | { 200 | saveToLog(LogFile, "***Exception: Unable to add freed chunk to list\n"); 201 | } 202 | } 203 | } 204 | } 205 | } 206 | 207 | 208 | // member function to write info about current heap operation to log file 209 | void save_to_log() 210 | { 211 | char * ascii_time; 212 | if (ShowTimeStamp) 213 | { 214 | struct tm * timeinfo; 215 | time ( & operation_timestamp ); 216 | timeinfo = localtime ( & operation_timestamp); 217 | ascii_time = strtok(asctime(timeinfo),"\n"); 218 | } 219 | else 220 | { 221 | ascii_time = ""; 222 | } 223 | 224 | if (!StaySilent) 225 | { 226 | if (operation_type == "rtlallocateheap") 227 | { 228 | saveToLog(LogFile, "PID: %u | %s | alloc(0x%x) = 0x%p from 0x%p (%s)\n",currentpid,ascii_time,chunk_size,chunk_start,saved_return_pointer,srp_imagename); 229 | } 230 | else if (operation_type == "rtlreallocateheap") 231 | { 232 | saveToLog(LogFile, "PID: %u | %s | realloc(0x%x) at 0x%p from 0x%p (%s)\n",currentpid,ascii_time,chunk_size,chunk_start,saved_return_pointer,srp_imagename); 233 | } 234 | else if (operation_type == "virtualalloc") 235 | { 236 | saveToLog(LogFile, "PID: %u | %s | virtualalloc(0x%x) at 0x%p from 0x%p (%s)\n",currentpid,ascii_time,chunk_size,chunk_start,saved_return_pointer,srp_imagename); 237 | } 238 | else if (operation_type == "rtlfreeheap") 239 | { 240 | saveToLog(LogFile, "PID: %u | %s | free(0x%p) from 0x%p (size was 0x%x) (%s)\n",currentpid,ascii_time, chunk_start,saved_return_pointer,chunk_size,srp_imagename); 241 | } 242 | } 243 | } 244 | 245 | private: 246 | int currentpid; 247 | bool isalloc; 248 | }; 249 | 250 | 251 | vector arrAllOperations; 252 | vector arrLoadedModules; 253 | 254 | 255 | /* ===================================================================== */ 256 | // Command line switches 257 | /* ===================================================================== */ 258 | 259 | KNOB KnobLogAlloc(KNOB_MODE_WRITEONCE, "pintool", 260 | "logalloc", "1", "Log heap allocations (RtlAllocateHeap, RtlReAllocateHeap and VirtualAlloc)"); 261 | 262 | KNOB KnobLogFree(KNOB_MODE_WRITEONCE, "pintool", 263 | "logfree", "1", "Log heap free operations (RtlFreeHeap)"); 264 | 265 | KNOB KnobShowTimeStamp(KNOB_MODE_WRITEONCE, "pintool", 266 | "timestamp", "0", "Show timestamps in output"); 267 | 268 | KNOB KnobSplitFiles(KNOB_MODE_WRITEONCE, "pintool", 269 | "splitfiles", "0", "Split output into PID-specific files"); 270 | 271 | KNOB KnobStaySilent(KNOB_MODE_WRITEONCE, "pintool", 272 | "silent", "0", "Silent mode, do not log allocs & frees to log file"); 273 | 274 | KNOB KnobBufferOutput(KNOB_MODE_WRITEONCE, "pintool", 275 | "bufferoutput", "1", "Buffer output in memory before writing to file. Dump contents to file 5000 lines at once"); 276 | 277 | /* ===================================================================== */ 278 | // Utilities 279 | /* ===================================================================== */ 280 | 281 | INT32 Usage() 282 | { 283 | 284 | return -1; 285 | } 286 | 287 | void dumpBufferToFile() 288 | { 289 | PIN_LockClient(); 290 | for (CLogEntry le : arrOutputBuffer) 291 | { 292 | FILE* LogF = le.getLogFile(); 293 | string entry = le.getEntry(); 294 | fprintf(LogF, "%s", entry); 295 | } 296 | // I won't fflush the output buffer here, for performance reasons. 297 | arrOutputBuffer.clear(); 298 | PIN_UnlockClient(); 299 | } 300 | 301 | 302 | void CloseLogFile() 303 | { 304 | // first dump remaining log entries to file, if any 305 | dumpBufferToFile(); 306 | // wrap up 307 | std::fprintf(ExceptionLogFile,"\nClosing log file for PID %u\n", PIN_GetPid()); 308 | std::fprintf(LogFile, "############## EOF\n"); 309 | fflush(LogFile); 310 | fclose(LogFile); 311 | } 312 | 313 | void CloseExceptionLogFile() 314 | { 315 | std::fprintf(ExceptionLogFile,"Closing exception log file for PID %u\n", PIN_GetPid()); 316 | std::fprintf(ExceptionLogFile, "############## EOF\n"); 317 | fflush(ExceptionLogFile); 318 | fclose(ExceptionLogFile); 319 | } 320 | 321 | 322 | string getCurrentDateTimeStr() 323 | { 324 | time_t thistime; 325 | thistime = time(0); 326 | char * ascii_time; 327 | struct tm * timeinfo; 328 | time ( & thistime); 329 | timeinfo = localtime ( & thistime); 330 | ascii_time = strtok(asctime(timeinfo),"\n"); 331 | stringstream returnval; 332 | returnval << ascii_time; 333 | return returnval.str(); 334 | } 335 | 336 | 337 | WINDOWS::DWORD findSize(ADDRINT address) 338 | { 339 | // search in map for key address 340 | std::map::iterator it; 341 | 342 | it = chunksizes.find(address); 343 | if (it != chunksizes.end()) 344 | { 345 | return it->second; 346 | } 347 | return 0; 348 | } 349 | 350 | void saveModToArray(CModuleImage& modimage) 351 | { 352 | // saving, just in case I want to do something with it later 353 | arrLoadedModules.push_back(modimage); 354 | } 355 | 356 | 357 | string getModuleImageNameByAddress(ADDRINT address) 358 | { 359 | string returnval = ""; 360 | IMG theimage; 361 | PIN_LockClient(); 362 | theimage = IMG_FindByAddress(address); 363 | PIN_UnlockClient(); 364 | if (IMG_Valid(theimage)) 365 | { 366 | returnval = IMG_Name(theimage); 367 | } 368 | return returnval; 369 | } 370 | 371 | 372 | string getAddressInfo(ADDRINT address) 373 | { 374 | stringstream ss; 375 | string info = ""; 376 | string modulename = ""; 377 | if (address > 0) 378 | { 379 | // check if address belongs to module or is part of heap 380 | modulename = getModuleImageNameByAddress(address); 381 | if (!modulename.empty()) 382 | { 383 | ss << "(" << modulename << ")"; 384 | info = ss.str(); 385 | } 386 | else 387 | { 388 | ss << ""; 389 | for (CHeapOperation op : arrAllOperations) 390 | { 391 | if (op.chunk_start <= address && address <= op.chunk_end) 392 | { 393 | ss << op.operation_type << "(0x" << std::hex << op.chunk_size << ") "; 394 | } 395 | } 396 | info = ss.str(); 397 | } 398 | } 399 | return info; 400 | } 401 | 402 | 403 | // wrapper to either write output to LogFile directly, or to buffer it first 404 | void saveToLog(FILE* Log, const char * fmt, ...) 405 | { 406 | va_list args; 407 | // convert to string first 408 | 409 | char entry [512]; // truncate after that 410 | va_start(args, fmt); 411 | vsnprintf(entry, 511, fmt, args); 412 | va_end(args); 413 | 414 | if (BufferOutput) 415 | { 416 | CLogEntry thisentry(Log, entry); 417 | arrOutputBuffer.push_back(thisentry); 418 | ++nrLogEntries; 419 | // check if we should dump to file now 420 | if (nrLogEntries > 5000) 421 | { 422 | dumpBufferToFile(); 423 | nrLogEntries = 0; 424 | } 425 | } 426 | else 427 | { 428 | // write to file directly 429 | std::fprintf(Log, "%s", entry); 430 | } 431 | 432 | } 433 | 434 | 435 | 436 | /* ===================================================================== */ 437 | // Analysis routines (runtime) 438 | /* ===================================================================== */ 439 | 440 | VOID CaptureRtlAllocateHeapBefore(THREADID tid, UINT32 flags, int size) 441 | { 442 | // At start of function, simply remember the requested size in TLS 443 | PIN_SetThreadData(alloc_key, (void *) size, tid); 444 | } 445 | 446 | 447 | VOID CaptureRtlAllocateHeapAfter(THREADID tid, ADDRINT addr, ADDRINT caller) 448 | { 449 | // At end of function restore requested size and save data 450 | // avoid noise 451 | if (addr > 0x1000 && addr < 0x7fffffff) 452 | { 453 | //restore size (dwBytes) argument that was stored at start of function 454 | int size = (int) PIN_GetThreadData(alloc_key, tid); 455 | 456 | // create new object 457 | CHeapOperation ho_alloc(true); 458 | ho_alloc.operation_type = "rtlallocateheap"; 459 | ho_alloc.chunk_start = addr; 460 | ho_alloc.chunk_size = size; 461 | ho_alloc.chunk_end = addr + size; 462 | ho_alloc.saved_return_pointer = caller; 463 | ho_alloc.operation_timestamp = time(0); 464 | string imagename = getModuleImageNameByAddress(caller); 465 | ho_alloc.srp_imagename = imagename; 466 | 467 | ho_alloc.save_to_log(); 468 | ho_alloc.check_addy(); 469 | 470 | arrAllOperations.push_back(ho_alloc); 471 | // add to map chunksizes (or update existing entry) 472 | chunksizes[addr] = size; 473 | 474 | } 475 | } 476 | 477 | 478 | VOID CaptureRtlReAllocateHeapBefore(THREADID tid, UINT32 flags, int size) 479 | { 480 | // At start of function, simply remember the requested size in TLS 481 | PIN_SetThreadData(alloc_key, (void *) size, tid); 482 | } 483 | 484 | 485 | VOID CaptureRtlReAllocateHeapAfter(THREADID tid, ADDRINT addr, ADDRINT caller) 486 | { 487 | // At end of function restore requested size and save data 488 | // avoid noise 489 | if (addr > 0x1000 && addr < 0x7fffffff) 490 | { 491 | //restore size argument that was stored at start of function 492 | int size = (int) PIN_GetThreadData(alloc_key, tid); 493 | 494 | // create new object 495 | CHeapOperation ho_alloc(true); 496 | ho_alloc.operation_type = "rtlreallocateheap"; 497 | ho_alloc.chunk_start = addr; 498 | ho_alloc.chunk_size = size; 499 | ho_alloc.chunk_end = addr + size; 500 | ho_alloc.saved_return_pointer = caller; 501 | ho_alloc.operation_timestamp = time(0); 502 | string imagename = getModuleImageNameByAddress(caller); 503 | ho_alloc.srp_imagename = imagename; 504 | 505 | ho_alloc.save_to_log(); 506 | ho_alloc.check_addy(); 507 | 508 | arrAllOperations.push_back(ho_alloc); 509 | // add to map chunksizes 510 | chunksizes[addr] = size; 511 | 512 | } 513 | } 514 | 515 | 516 | VOID CaptureVirtualAllocBefore(THREADID tid, int size, int flProtect) 517 | { 518 | // At start of function, simply remember the requested size in TLS 519 | PIN_SetThreadData(alloc_key, (void *) size, tid); 520 | } 521 | 522 | 523 | VOID CaptureVirtualAllocAfter(THREADID tid, ADDRINT addr, ADDRINT caller) 524 | { 525 | // At end of function restore requested size and save data 526 | // avoid noise 527 | 528 | //restore size argument that was stored at start of function 529 | int size = (int) PIN_GetThreadData(alloc_key, tid); 530 | 531 | // create new object 532 | CHeapOperation ho_alloc(true); 533 | ho_alloc.operation_type = "virtualalloc"; 534 | ho_alloc.chunk_start = addr; 535 | ho_alloc.chunk_size = size; 536 | ho_alloc.chunk_end = addr + size; 537 | ho_alloc.saved_return_pointer = caller; 538 | ho_alloc.operation_timestamp = time(0); 539 | string imagename = getModuleImageNameByAddress(caller); 540 | ho_alloc.srp_imagename = imagename; 541 | 542 | ho_alloc.save_to_log(); 543 | ho_alloc.check_addy(); 544 | 545 | arrAllOperations.push_back(ho_alloc); 546 | // add to map chunksizes 547 | chunksizes[addr] = size; 548 | } 549 | 550 | 551 | VOID CaptureRtlFreeHeapBefore(ADDRINT addr, ADDRINT caller) 552 | { 553 | 554 | // avoid noise 555 | if (addr > 0x1000 && addr < 0x7fffffff) 556 | { 557 | // create new object 558 | CHeapOperation ho_free(false); 559 | ho_free.operation_type = "rtlfreeheap"; 560 | ho_free.chunk_start = addr; 561 | ho_free.saved_return_pointer = caller; 562 | ho_free.operation_timestamp = time(0); 563 | 564 | string imagename = getModuleImageNameByAddress(caller); 565 | 566 | 567 | // see if we can get size from previous allocation 568 | WINDOWS::DWORD size = findSize(addr); 569 | ho_free.chunk_size = size; 570 | ho_free.chunk_end = ho_free.chunk_start + size; 571 | ho_free.srp_imagename = imagename; 572 | 573 | ho_free.save_to_log(); 574 | ho_free.check_addy(); 575 | 576 | arrAllOperations.push_back(ho_free); 577 | 578 | // remove from chunksizes, because no longer relevant 579 | chunksizes.erase(addr); 580 | 581 | } 582 | } 583 | 584 | 585 | 586 | 587 | /* ===================================================================== */ 588 | // Instrumentation callbacks (instrumentation time) 589 | /* ===================================================================== */ 590 | 591 | VOID AddInstrumentation(IMG img, VOID *v) 592 | { 593 | // this instrumentation routine gets executed when an image is loaded 594 | 595 | // first, add image information to global array 596 | ADDRINT BaseAddy = IMG_LowAddress(img); 597 | CModuleImage thisimage(img); 598 | saveModToArray(thisimage); 599 | thisimage.save_to_log(); 600 | 601 | // next, walk through the symbols in the symbol table to see if it contains the Heap related functions that we want to monitor 602 | // 603 | for (SYM sym = IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym)) 604 | { 605 | string undFuncName = PIN_UndecorateSymbolName(SYM_Name(sym), UNDECORATION_NAME_ONLY); 606 | 607 | // Find the RtlAllocateHeap() function. 608 | if (undFuncName == "RtlAllocateHeap" && LogAlloc) 609 | { 610 | RTN allocRtn = LEVEL_PINCLIENT::RTN_FindByAddress(IMG_LowAddress(img) + SYM_Value(sym)); 611 | 612 | if (LEVEL_PINCLIENT::RTN_Valid(allocRtn)) 613 | { 614 | // Instrument to capture allocation address and original function arguments 615 | // at end of the RtlAllocateHeap function 616 | 617 | LEVEL_PINCLIENT::RTN_Open(allocRtn); 618 | 619 | saveToLog(LogFile,"Adding instrumentation for RtlAllocateHeap (0x%p) %s \n", (BaseAddy + SYM_Value(sym)), IMG_Name(img)); 620 | 621 | LEVEL_PINCLIENT::RTN_InsertCall(allocRtn, IPOINT_BEFORE, (AFUNPTR) &CaptureRtlAllocateHeapBefore, 622 | IARG_THREAD_ID, IARG_FUNCARG_ENTRYPOINT_VALUE, 1, 623 | IARG_FUNCARG_ENTRYPOINT_VALUE, 2, IARG_END); 624 | 625 | // return value is the address that has been allocated 626 | LEVEL_PINCLIENT::RTN_InsertCall(allocRtn, IPOINT_AFTER, (AFUNPTR) &CaptureRtlAllocateHeapAfter, 627 | IARG_THREAD_ID, IARG_FUNCRET_EXITPOINT_VALUE, IARG_G_ARG0_CALLER, IARG_END); 628 | 629 | LEVEL_PINCLIENT::RTN_Close(allocRtn); 630 | } 631 | } 632 | 633 | // Find the RtlReAllocateHeap() function. 634 | else if (undFuncName == "RtlReAllocateHeap" && LogAlloc) 635 | { 636 | RTN reallocRtn = LEVEL_PINCLIENT::RTN_FindByAddress(IMG_LowAddress(img) + SYM_Value(sym)); 637 | 638 | if (LEVEL_PINCLIENT::RTN_Valid(reallocRtn)) 639 | { 640 | // Instrument to capture allocation address and original function arguments 641 | // at end of the RtlAllocateHeap function 642 | 643 | LEVEL_PINCLIENT::RTN_Open(reallocRtn); 644 | 645 | saveToLog(LogFile,"Adding instrumentation for RtlReAllocateHeap (0x%p) %s \n", (BaseAddy + SYM_Value(sym)), IMG_Name(img)); 646 | // HeapHandle 647 | // Flags 648 | // MemoryPointer 649 | // Size 650 | LEVEL_PINCLIENT::RTN_InsertCall(reallocRtn, IPOINT_BEFORE, (AFUNPTR) &CaptureRtlReAllocateHeapBefore, 651 | IARG_THREAD_ID, IARG_FUNCARG_ENTRYPOINT_VALUE, 2, 652 | IARG_FUNCARG_ENTRYPOINT_VALUE, 3, IARG_END); 653 | 654 | // return value is the address that has been allocated 655 | LEVEL_PINCLIENT::RTN_InsertCall(reallocRtn, IPOINT_AFTER, (AFUNPTR) &CaptureRtlReAllocateHeapAfter, 656 | IARG_THREAD_ID, IARG_FUNCRET_EXITPOINT_VALUE, IARG_G_ARG0_CALLER, IARG_END); 657 | 658 | LEVEL_PINCLIENT::RTN_Close(reallocRtn); 659 | } 660 | } 661 | 662 | // Find the VirtualAlloc() function. 663 | else if (undFuncName == "VirtualAlloc" && LogAlloc) 664 | { 665 | RTN vaallocRtn = LEVEL_PINCLIENT::RTN_FindByAddress(IMG_LowAddress(img) + SYM_Value(sym)); 666 | 667 | if (LEVEL_PINCLIENT::RTN_Valid(vaallocRtn)) 668 | { 669 | // Instrument to capture allocation address and original function arguments 670 | // at end of the VirtualAlloc function 671 | 672 | LEVEL_PINCLIENT::RTN_Open(vaallocRtn); 673 | 674 | saveToLog(LogFile,"Adding instrumentation for VirtualAlloc (0x%p) %s\n", (BaseAddy + SYM_Value(sym)), IMG_Name(img)); 675 | // lpAddress 676 | // dwSize 677 | // flAllocationType 678 | // flProtect 679 | LEVEL_PINCLIENT::RTN_InsertCall(vaallocRtn, IPOINT_BEFORE, (AFUNPTR) &CaptureVirtualAllocBefore, 680 | IARG_THREAD_ID, IARG_FUNCARG_ENTRYPOINT_VALUE, 1, 681 | IARG_FUNCARG_ENTRYPOINT_VALUE, 3, IARG_END); 682 | 683 | // return value is the address that has been allocated 684 | LEVEL_PINCLIENT::RTN_InsertCall(vaallocRtn, IPOINT_AFTER, (AFUNPTR) &CaptureVirtualAllocAfter, 685 | IARG_THREAD_ID, IARG_FUNCRET_EXITPOINT_VALUE, IARG_G_ARG0_CALLER, IARG_END); 686 | 687 | LEVEL_PINCLIENT::RTN_Close(vaallocRtn); 688 | } 689 | } 690 | 691 | 692 | // Find the RtlFreeHeap() function. 693 | else if (undFuncName == "RtlFreeHeap" && LogFree) 694 | { 695 | RTN freeRtn = RTN_FindByAddress(IMG_LowAddress(img) + SYM_Value(sym)); 696 | 697 | if (RTN_Valid(freeRtn)) 698 | { 699 | LEVEL_PINCLIENT::RTN_Open(freeRtn); 700 | 701 | saveToLog(LogFile,"Adding instrumentation for RtlFreeHeap (0x%p) %s\n", (BaseAddy + SYM_Value(sym)), IMG_Name(img)); 702 | 703 | LEVEL_PINCLIENT::RTN_InsertCall(freeRtn, IPOINT_BEFORE, (AFUNPTR) &CaptureRtlFreeHeapBefore, 704 | IARG_FUNCARG_ENTRYPOINT_VALUE, 2, // address 705 | IARG_G_ARG0_CALLER, // saved return pointer 706 | IARG_END); 707 | 708 | LEVEL_PINCLIENT::RTN_Close(freeRtn); 709 | } 710 | } 711 | 712 | } 713 | } 714 | 715 | 716 | VOID LogContext(const CONTEXT *ctxt) 717 | { 718 | string exceptiontimestamp = getCurrentDateTimeStr(); 719 | std::fprintf(ExceptionLogFile, "Exception timestamp: %s\n", exceptiontimestamp); 720 | std::fprintf(ExceptionLogFile, "PID %u | Exception context:\n", PIN_GetPid()); 721 | ADDRINT EIP = PIN_GetContextReg( ctxt, REG_INST_PTR ); 722 | ADDRINT EAX = PIN_GetContextReg( ctxt, REG_EAX ); 723 | ADDRINT EBX = PIN_GetContextReg( ctxt, REG_EBX ); 724 | ADDRINT ECX = PIN_GetContextReg( ctxt, REG_ECX ); 725 | ADDRINT EDX = PIN_GetContextReg( ctxt, REG_EDX ); 726 | ADDRINT ESP = PIN_GetContextReg( ctxt, REG_ESP ); 727 | ADDRINT EBP = PIN_GetContextReg( ctxt, REG_EBP ); 728 | ADDRINT ESI = PIN_GetContextReg( ctxt, REG_ESI ); 729 | ADDRINT EDI = PIN_GetContextReg( ctxt, REG_EDI ); 730 | 731 | string EIPinfo = getAddressInfo(EIP); 732 | string EAXinfo = getAddressInfo(EAX); 733 | string EBXinfo = getAddressInfo(EBX); 734 | string ECXinfo = getAddressInfo(ECX); 735 | string EDXinfo = getAddressInfo(EDX); 736 | string EBPinfo = getAddressInfo(EBP); 737 | string ESPinfo = getAddressInfo(ESP); 738 | string ESIinfo = getAddressInfo(ESI); 739 | string EDIinfo = getAddressInfo(EDI); 740 | 741 | std::fprintf(ExceptionLogFile, "EIP: 0x%p %s\n", EIP, EIPinfo); 742 | std::fprintf(ExceptionLogFile, "EAX: 0x%p %s\n", EAX, EAXinfo); 743 | std::fprintf(ExceptionLogFile, "EBX: 0x%p %s\n", EBX, EBXinfo); 744 | std::fprintf(ExceptionLogFile, "ECX: 0x%p %s\n", ECX, ECXinfo); 745 | std::fprintf(ExceptionLogFile, "EDX: 0x%p %s\n", EDX, EDXinfo); 746 | std::fprintf(ExceptionLogFile, "EBP: 0x%p %s\n", EBP, EBPinfo); 747 | std::fprintf(ExceptionLogFile, "ESP: 0x%p %s\n", ESP, ESPinfo); 748 | std::fprintf(ExceptionLogFile, "ESI: 0x%p %s\n", ESI, ESIinfo); 749 | std::fprintf(ExceptionLogFile, "EDI: 0x%p %s\n", EDI, EDIinfo); 750 | std::fprintf(ExceptionLogFile, "\n"); 751 | } 752 | 753 | 754 | 755 | VOID OnException(THREADID threadIndex, CONTEXT_CHANGE_REASON reason, const CONTEXT *ctxtFrom, CONTEXT *ctxtTo, INT32 info, VOID *v) 756 | { 757 | if (reason != CONTEXT_CHANGE_REASON_EXCEPTION) 758 | return; 759 | 760 | UINT32 exceptionCode = info; 761 | ADDRINT address = PIN_GetContextReg(ctxtFrom, REG_INST_PTR); 762 | saveToLog(LogFile, "\n\n*** Exception at 0x%p, code 0x%x ***\n", address, exceptionCode); 763 | if ((exceptionCode >= 0xc0000000) && (exceptionCode <= 0xcfffffff)) 764 | { 765 | saveToLog(LogFile, "%s\n", "For more info about this exception, see exception log file ***"); 766 | LogContext(ctxtFrom); 767 | CloseExceptionLogFile(); 768 | CloseLogFile(); 769 | PIN_ExitProcess(-1); 770 | } 771 | } 772 | 773 | 774 | BOOL FollowChild(CHILD_PROCESS childProcess, VOID * userData) 775 | { 776 | saveToLog(LogFile, "\n*******************************\nCreating child process from parent PID %u\n*******************************\n\n", PIN_GetPid()); 777 | return true; 778 | } 779 | 780 | 781 | 782 | VOID Fini(INT32 code, VOID *v) 783 | { 784 | saveToLog(LogFile,"\n\nNumber of heap operations logged: %d\n",arrAllOperations.size()); 785 | CloseLogFile(); 786 | } 787 | 788 | 789 | VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v) 790 | { 791 | PIN_GetLock(&lock, threadid+1); 792 | saveToLog(LogFile, "PID: %u | New thread id %d\n",PIN_GetPid(),threadid); 793 | PIN_ReleaseLock(&lock); 794 | } 795 | 796 | VOID ThreadStop(THREADID threadid, const CONTEXT *ctxt, INT32 code, VOID *v) 797 | { 798 | PIN_GetLock(&lock, threadid+1); 799 | saveToLog(LogFile, "PID: %u | Closed thread id %d\n",PIN_GetPid(),threadid); 800 | PIN_ReleaseLock(&lock); 801 | } 802 | 803 | /*! 804 | */ 805 | int main(int argc, char *argv[]) 806 | { 807 | // init PIN Lock 808 | PIN_InitLock(&lock); 809 | 810 | // Initialize PIN library. 811 | PIN_Init(argc,argv); 812 | 813 | // convert command line options into Global options 814 | LogAlloc = KnobLogAlloc.Value(); 815 | LogFree = KnobLogFree.Value(); 816 | ShowTimeStamp = KnobShowTimeStamp.Value(); 817 | SplitFiles = KnobSplitFiles.Value(); 818 | StaySilent = KnobStaySilent.Value(); 819 | BufferOutput = KnobBufferOutput.Value(); 820 | 821 | // define logfile name and behaviour 822 | int currentpid = PIN_GetPid(); 823 | stringstream ss; 824 | ss << "corelan_heaplog_"; 825 | ss << currentpid; 826 | ss << ".log"; 827 | string fileName = ss.str(); 828 | char * openMode = "w+"; 829 | 830 | if (!SplitFiles) 831 | { 832 | fileName = "corelan_heaplog.log"; 833 | openMode = "a+"; 834 | } 835 | 836 | LogFile = fopen(fileName.c_str(),openMode); 837 | ExceptionLogFile = fopen("corelan_heaplog_exception.log","a+"); 838 | 839 | saveToLog(LogFile, "Instrumentation started\n"); 840 | 841 | // load symbols. 842 | PIN_InitSymbols(); 843 | 844 | 845 | // we will need a way to pass data around, so we'll store stuff in TLS 846 | alloc_key = PIN_CreateThreadDataKey(0); 847 | 848 | std::string ascii_time; 849 | ascii_time = getCurrentDateTimeStr(); 850 | 851 | saveToLog(LogFile, "==========================================\n"); 852 | saveToLog(LogFile, "Date & time: %s\n", ascii_time); 853 | saveToLog(LogFile,"Adding output for PID %u into this file\n", currentpid); 854 | 855 | 856 | if (LogAlloc) saveToLog(LogFile, "Logging heap alloc: YES\n"); else saveToLog(LogFile, "Logging heap alloc: NO\n"); 857 | if (LogFree) saveToLog(LogFile, "Logging heap free: YES\n"); else saveToLog(LogFile, "Logging heap free: NO\n"); 858 | if (BufferOutput) saveToLog(LogFile, "Buffering output: YES\n"); else saveToLog(LogFile, "Buffering output: NO\n"); 859 | 860 | // notify when following child process 861 | PIN_AddFollowChildProcessFunction(FollowChild, 0); 862 | 863 | // notify when new thread is created or closed 864 | 865 | PIN_AddThreadStartFunction(ThreadStart, 0); 866 | PIN_AddThreadFiniFunction(ThreadStop, 0); 867 | 868 | // only add instrumentation if we have to :) 869 | 870 | if (LogAlloc || LogFree) 871 | { 872 | // Register function to be called to instrument traces 873 | IMG_AddInstrumentFunction(AddInstrumentation, 0); 874 | 875 | // Register function to be called when the application exits 876 | PIN_AddFiniFunction(Fini, 0); 877 | } 878 | 879 | //Handle exceptions 880 | PIN_AddContextChangeFunction(OnException, 0); 881 | 882 | saveToLog(LogFile, "==========================================\n\n"); 883 | 884 | // Start the program, never returns 885 | PIN_StartProgram(); 886 | 887 | return 0; 888 | } 889 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.opensdf: -------------------------------------------------------------------------------- 1 | corelanCORELAN-WIN7-2 -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.sdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Corelan_HeapLog.sdf -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Corelan_HeapLog", "Corelan_HeapLog.vcxproj", "{639EF517-FCFC-408E-9500-71F0DC0458DB}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Debug|x64 = Debug|x64 10 | Release|Win32 = Release|Win32 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Debug|Win32.Build.0 = Debug|Win32 16 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Debug|x64.ActiveCfg = Debug|x64 17 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Debug|x64.Build.0 = Debug|x64 18 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Release|Win32.ActiveCfg = Release|Win32 19 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Release|Win32.Build.0 = Release|Win32 20 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Release|x64.ActiveCfg = Release|x64 21 | {639EF517-FCFC-408E-9500-71F0DC0458DB}.Release|x64.Build.0 = Release|x64 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | EndGlobal 27 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Corelan_HeapLog.v11.suo -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {639EF517-FCFC-408E-9500-71F0DC0458DB} 23 | Corelan_HeapLog 24 | Win32Proj 25 | 26 | 27 | 28 | DynamicLibrary 29 | MultiByte 30 | true 31 | v110 32 | 33 | 34 | DynamicLibrary 35 | MultiByte 36 | v110 37 | 38 | 39 | DynamicLibrary 40 | MultiByte 41 | true 42 | v110 43 | 44 | 45 | DynamicLibrary 46 | MultiByte 47 | v110 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | <_ProjectFileVersion>10.0.40219.1 67 | $(ProjectDir)$(Configuration)\ 68 | $(Configuration)\ 69 | false 70 | false 71 | $(ProjectDir)$(Platform)\$(Configuration)\ 72 | $(Platform)\$(Configuration)\ 73 | false 74 | false 75 | $(ProjectDir)$(Configuration)\ 76 | $(Configuration)\ 77 | false 78 | false 79 | $(ProjectDir)$(Platform)\$(Configuration)\ 80 | $(Platform)\$(Configuration)\ 81 | false 82 | false 83 | AllRules.ruleset 84 | 85 | 86 | AllRules.ruleset 87 | 88 | 89 | AllRules.ruleset 90 | 91 | 92 | AllRules.ruleset 93 | 94 | 95 | 96 | 97 | 98 | /EHs- /EHa- %(AdditionalOptions) 99 | Disabled 100 | ..\..\include\pin;..\..\include\pin\gen;..\InstLib;..\..\..\extras\xed-ia32\include;..\..\..\extras\components\include;%(AdditionalIncludeDirectories) 101 | TARGET_IA32;HOST_IA32;TARGET_WINDOWS;BIGARRAY_MULTIPLIER=1;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;WIN32 102 | false 103 | 104 | 105 | Default 106 | MultiThreaded 107 | false 108 | true 109 | NotSet 110 | false 111 | 112 | 113 | Level3 114 | ProgramDatabase 115 | 4530;%(DisableSpecificWarnings) 116 | 117 | 118 | /export:main %(AdditionalOptions) 119 | pin.lib;libxed.lib;libcpmt.lib;libcmt.lib;pinvm.lib;kernel32.lib;ntdll-32.lib 120 | ..\..\..\ia32\lib;..\..\..\ia32\lib-ext;..\..\..\extras\xed-ia32\lib;%(AdditionalLibraryDirectories) 121 | true 122 | %(IgnoreSpecificDefaultLibraries) 123 | true 124 | NotSet 125 | false 126 | Ptrace_DllMainCRTStartup%4012 127 | 0x55000000 128 | MachineX86 129 | true 130 | false 131 | 132 | 133 | 134 | 135 | X64 136 | 137 | 138 | /EHs- /EHa- %(AdditionalOptions) 139 | Disabled 140 | ..\..\include\pin;..\..\include\pin\gen;..\InstLib;..\..\..\extras\xed-intel64\include;..\..\..\extras\components\include;%(AdditionalIncludeDirectories) 141 | TARGET_IA32E;HOST_IA32E;TARGET_WINDOWS;BIGARRAY_MULTIPLIER=1;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;WIN32 142 | false 143 | 144 | 145 | Default 146 | MultiThreaded 147 | false 148 | true 149 | false 150 | 151 | 152 | Level3 153 | ProgramDatabase 154 | 4530;%(DisableSpecificWarnings) 155 | 156 | 157 | /export:main %(AdditionalOptions) 158 | pin.lib;libxed.lib;libcpmt.lib;libcmt.lib;pinvm.lib;kernel32.lib;ntdll-64.lib 159 | ..\..\..\intel64\lib;..\..\..\intel64\lib-ext;..\..\..\extras\xed-intel64\lib;%(AdditionalLibraryDirectories) 160 | true 161 | %(IgnoreSpecificDefaultLibraries) 162 | true 163 | NotSet 164 | false 165 | Ptrace_DllMainCRTStartup 166 | 0xC5000000 167 | MachineX64 168 | true 169 | 170 | 171 | 172 | 173 | /EHs- /EHa- %(AdditionalOptions) 174 | true 175 | false 176 | ..\..\include;..\..\include\gen;..\InstLib;..\..\..\extras\xed-ia32\include;..\..\..\extras\components\include;%(AdditionalIncludeDirectories) 177 | TARGET_IA32;HOST_IA32;TARGET_WINDOWS;BIGARRAY_MULTIPLIER=1;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;WIN32 178 | false 179 | 180 | 181 | Default 182 | MultiThreaded 183 | false 184 | true 185 | NotSet 186 | false 187 | 188 | 189 | Level3 190 | 191 | 192 | 4530;%(DisableSpecificWarnings) 193 | 194 | 195 | /export:main %(AdditionalOptions) 196 | pin.lib;libxed.lib;libcpmt.lib;libcmt.lib;pinvm.lib;kernel32.lib;ntdll-32.lib 197 | ..\..\..\ia32\lib;..\..\..\ia32\lib-ext;..\..\..\extras\xed-ia32\lib;%(AdditionalLibraryDirectories) 198 | true 199 | %(IgnoreSpecificDefaultLibraries) 200 | true 201 | NotSet 202 | true 203 | 204 | 205 | 206 | 207 | Ptrace_DllMainCRTStartup%4012 208 | 0x55000000 209 | MachineX86 210 | 211 | 212 | 213 | 214 | X64 215 | 216 | 217 | /EHs- /EHa- %(AdditionalOptions) 218 | true 219 | false 220 | ..\..\include;..\..\include\gen;..\InstLib;..\..\..\extras\xed-intel64\include;..\..\..\extras\components\include;%(AdditionalIncludeDirectories) 221 | TARGET_IA32E;HOST_IA32E;TARGET_WINDOWS;BIGARRAY_MULTIPLIER=1;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;WIN32 222 | false 223 | 224 | 225 | Default 226 | MultiThreaded 227 | false 228 | true 229 | false 230 | 231 | 232 | Level3 233 | 234 | 235 | 4530;%(DisableSpecificWarnings) 236 | 237 | 238 | /export:main %(AdditionalOptions) 239 | pin.lib;libxed.lib;libcpmt.lib;libcmt.lib;pinvm.lib;kernel32.lib;ntdll-64.lib 240 | ..\..\..\intel64\lib;..\..\..\intel64\lib-ext;..\..\..\extras\xed-intel64\lib;%(AdditionalLibraryDirectories) 241 | true 242 | %(IgnoreSpecificDefaultLibraries) 243 | true 244 | NotSet 245 | true 246 | 247 | 248 | 249 | 250 | Ptrace_DllMainCRTStartup 251 | 0xC5000000 252 | MachineX64 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Corelan_HeapLog.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {b8dd2600-7302-4aa7-a99d-1607cd3cd4fb} 14 | txt;doc;html 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Documents 25 | 26 | 27 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/CL.read.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/CL.write.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.Build.CppClean.log: -------------------------------------------------------------------------------- 1 | C:\PIN\VC11\SOURCE\TOOLS\CORELAN_HEAPLOG\DEBUG\CORELAN_HEAPLOG.OBJ 2 | C:\PIN\VC11\SOURCE\TOOLS\CORELAN_HEAPLOG\DEBUG\VC110.PDB 3 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 4 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 5 | C:\PIN\VC11\SOURCE\TOOLS\CORELAN_HEAPLOG\DEBUG\CORELAN_HEAPLOG.DLL 6 | C:\PIN\VC11\SOURCE\TOOLS\CORELAN_HEAPLOG\DEBUG\CORELAN_HEAPLOG.PDB 7 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.obj 8 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\cl.command.1.tlog 9 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\CL.read.1.tlog 10 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\CL.write.1.tlog 11 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.write.1.tlog 12 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\link.command.1.tlog 13 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\link.read.1.tlog 14 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\link.write.1.tlog 15 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.pdb 16 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\vc110.pdb 17 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.dll 18 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/Corelan_HeapLog.dll -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/Corelan_HeapLog.exp -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.lastbuildstate: -------------------------------------------------------------------------------- 1 | #v4.0:v110:false 2 | Debug|Win32|C:\pin\vc11\source\tools\Corelan_HeapLog\| 3 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/Corelan_HeapLog.lib -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.log: -------------------------------------------------------------------------------- 1 | Build started 29/12/2015 4:08:39. 2 | 1>Project "C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj" on node 2 (Build target(s)). 3 | 1>ClCompile: 4 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I..\..\include\pin /I..\..\include\pin\gen /I..\InstLib /I"..\..\..\extras\xed-ia32\include" /I..\..\..\extras\components\include /Zi /nologo /W3 /WX- /Od /Oy- /D TARGET_IA32 /D HOST_IA32 /D TARGET_WINDOWS /D BIGARRAY_MULTIPLIER=1 /D _CRT_SECURE_NO_DEPRECATE /D _SECURE_SCL=0 /D WIN32 /Gm- /MT /GS- /Gy /fp:precise /Zc:wchar_t /Zc:forScope /GR- /Fo"Debug\\" /Fd"Debug\vc110.pdb" /Gd /TP /wd4530 /analyze- /errorReport:prompt /EHs- /EHa- Corelan_HeapLog.cpp 5 | Corelan_HeapLog.cpp 6 | Link: 7 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:..\..\..\ia32\lib /LIBPATH:"..\..\..\ia32\lib-ext" /LIBPATH:"..\..\..\extras\xed-ia32\lib" pin.lib libxed.lib libcpmt.lib libcmt.lib pinvm.lib kernel32.lib "ntdll-32.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.pdb" /OPT:NOREF /TLBID:1 /ENTRY:"Ptrace_DllMainCRTStartup@12" /BASE:"0x55000000" /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib" /MACHINE:X86 /SAFESEH:NO /export:main /DLL Debug\Corelan_HeapLog.obj 8 | Creating library C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib and object C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 9 | Corelan_HeapLog.vcxproj -> C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.dll 10 | 1>Done Building Project "C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj" (Build target(s)). 11 | 12 | Build succeeded. 13 | 14 | Time Elapsed 00:00:03.46 15 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/Corelan_HeapLog.obj -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/Corelan_HeapLog.pdb -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/Corelan_HeapLog.write.1.tlog: -------------------------------------------------------------------------------- 1 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 2 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 3 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 4 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 5 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 6 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 7 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 8 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 9 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 10 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 11 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 12 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 13 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 14 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 15 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 16 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 17 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 18 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 19 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 20 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 21 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 22 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 23 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 24 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 25 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 26 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 27 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 28 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 29 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 30 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 31 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 32 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 33 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 34 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 35 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 36 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 37 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 38 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 39 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 40 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 41 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 42 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 43 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 44 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 45 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 46 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 47 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 48 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 49 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 50 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 51 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 52 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 53 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 54 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 55 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 56 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 57 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 58 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 59 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 60 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 61 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 62 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 63 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 64 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 65 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 66 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 67 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 68 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 69 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 70 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 71 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 72 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 73 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 74 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 75 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 76 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 77 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 78 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 79 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 80 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 81 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 82 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 83 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 84 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 85 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 86 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 87 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 88 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 89 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 90 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 91 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 92 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 93 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 94 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 95 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 96 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 97 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 98 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 99 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 100 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 101 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 102 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 103 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 104 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 105 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 106 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 107 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 108 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 109 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 110 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 111 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 112 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 113 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 114 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 115 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 116 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 117 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 118 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 119 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 120 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 121 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 122 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 123 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 124 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 125 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 126 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 127 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 128 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 129 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 130 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 131 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 132 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 133 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 134 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 135 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 136 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 137 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 138 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 139 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 140 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 141 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 142 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 143 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 144 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 145 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 146 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 147 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 148 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 149 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 150 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 151 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 152 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 153 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 154 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 155 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 156 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 157 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 158 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 159 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 160 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 161 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 162 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 163 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 164 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 165 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 166 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 167 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 168 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 169 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 170 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 171 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 172 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 173 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 174 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 175 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 176 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 177 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 178 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 179 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 180 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 181 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 182 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 183 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 184 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 185 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 186 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 187 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 188 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 189 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 190 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 191 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 192 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 193 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 194 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 195 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 196 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 197 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 198 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 199 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 200 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 201 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 202 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 203 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 204 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 205 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 206 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 207 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 208 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 209 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 210 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 211 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 212 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 213 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 214 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 215 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 216 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 217 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 218 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 219 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 220 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 221 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 222 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 223 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 224 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 225 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 226 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 227 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 228 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 229 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 230 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 231 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 232 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 233 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 234 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 235 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 236 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 237 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 238 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 239 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 240 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 241 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 242 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 243 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 244 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 245 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 246 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 247 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 248 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 249 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 250 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 251 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 252 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 253 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 254 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 255 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 256 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 257 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 258 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 259 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 260 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 261 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 262 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 263 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 264 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 265 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 266 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 267 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 268 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 269 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 270 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 271 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 272 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 273 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 274 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 275 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 276 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 277 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 278 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 279 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 280 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 281 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 282 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 283 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 284 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 285 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 286 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 287 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 288 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 289 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 290 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 291 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 292 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 293 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 294 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 295 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 296 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 297 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 298 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 299 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 300 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 301 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 302 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 303 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 304 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 305 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 306 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 307 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 308 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 309 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 310 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 311 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 312 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 313 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 314 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 315 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 316 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 317 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 318 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 319 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 320 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 321 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 322 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 323 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 324 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 325 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 326 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 327 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 328 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 329 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 330 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 331 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 332 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 333 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 334 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 335 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 336 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 337 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 338 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 339 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 340 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 341 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 342 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 343 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 344 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 345 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 346 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 347 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 348 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 349 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 350 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 351 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 352 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 353 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 354 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 355 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 356 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 357 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 358 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 359 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 360 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 361 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 362 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 363 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 364 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 365 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 366 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 367 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 368 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 369 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 370 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 371 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 372 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 373 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 374 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 375 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 376 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 377 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 378 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 379 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 380 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 381 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 382 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 383 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 384 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 385 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 386 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 387 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 388 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 389 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 390 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 391 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 392 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 393 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 394 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 395 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 396 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 397 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 398 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 399 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 400 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 401 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 402 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 403 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 404 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 405 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 406 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 407 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 408 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 409 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 410 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 411 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 412 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 413 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 414 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 415 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 416 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 417 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 418 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 419 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 420 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 421 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 422 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 423 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 424 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 425 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 426 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 427 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 428 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 429 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 430 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 431 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 432 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 433 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 434 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 435 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 436 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 437 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 438 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 439 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 440 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 441 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 442 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 443 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 444 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 445 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 446 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 447 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 448 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 449 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 450 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 451 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 452 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 453 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 454 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 455 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 456 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 457 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 458 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 459 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 460 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 461 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 462 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 463 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 464 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 465 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 466 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 467 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 468 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 469 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 470 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 471 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 472 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 473 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 474 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 475 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 476 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 477 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 478 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 479 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 480 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 481 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 482 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 483 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 484 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 485 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 486 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 487 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 488 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 489 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 490 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 491 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 492 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 493 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 494 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 495 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 496 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 497 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 498 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 499 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 500 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 501 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 502 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 503 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 504 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 505 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 506 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 507 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 508 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 509 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 510 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 511 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 512 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 513 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 514 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 515 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 516 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 517 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 518 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 519 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 520 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 521 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 522 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 523 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 524 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 525 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 526 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 527 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 528 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 529 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 530 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 531 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 532 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 533 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 534 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 535 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 536 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 537 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 538 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 539 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 540 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 541 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 542 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 543 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 544 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 545 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 546 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 547 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 548 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 549 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 550 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 551 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 552 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 553 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 554 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 555 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 556 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 557 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 558 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 559 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 560 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 561 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 562 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 563 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 564 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 565 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 566 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 567 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 568 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 569 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 570 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 571 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 572 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 573 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 574 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 575 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 576 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 577 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 578 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 579 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 580 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 581 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 582 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 583 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 584 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 585 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 586 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 587 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 588 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 589 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 590 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 591 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 592 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 593 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 594 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 595 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 596 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 597 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 598 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 599 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 600 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 601 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 602 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 603 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 604 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 605 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 606 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 607 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 608 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 609 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 610 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 611 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 612 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 613 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 614 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 615 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 616 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 617 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 618 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 619 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 620 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 621 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 622 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 623 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 624 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 625 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 626 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 627 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 628 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 629 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 630 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 631 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 632 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 633 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 634 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 635 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 636 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 637 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 638 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 639 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 640 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 641 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 642 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 643 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 644 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 645 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 646 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 647 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 648 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 649 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 650 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 651 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 652 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 653 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 654 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 655 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 656 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 657 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 658 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 659 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 660 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 661 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 662 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 663 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 664 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 665 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 666 | ^C:\pin\vc11\source\tools\Corelan_HeapLog\Corelan_HeapLog.vcxproj 667 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 668 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.lib 669 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 670 | C:\pin\vc11\source\tools\Corelan_HeapLog\Debug\Corelan_HeapLog.exp 671 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/cl.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/cl.command.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/link.command.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/link.read.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/link.write.1.tlog -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/Debug/vc110.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/corelan/pin/908e6f82461c17d19048986d672ebe8ab80a33a8/win32/Corelan_HeapLog/Debug/vc110.pdb -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/makefile: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # 3 | # DO NOT EDIT THIS FILE! 4 | # 5 | ############################################################## 6 | 7 | # If the tool is built out of the kit, PIN_ROOT must be specified in the make invocation and point to the kit root. 8 | ifdef PIN_ROOT 9 | CONFIG_ROOT := $(PIN_ROOT)/source/tools/Config 10 | else 11 | CONFIG_ROOT := ../Config 12 | endif 13 | include $(CONFIG_ROOT)/makefile.config 14 | include makefile.rules 15 | include $(TOOLS_ROOT)/Config/makefile.default.rules 16 | 17 | ############################################################## 18 | # 19 | # DO NOT EDIT THIS FILE! 20 | # 21 | ############################################################## 22 | -------------------------------------------------------------------------------- /win32/Corelan_HeapLog/makefile.rules: -------------------------------------------------------------------------------- 1 | ############################################################## 2 | # 3 | # This file includes all the test targets as well as all the 4 | # non-default build rules and test recipes. 5 | # 6 | ############################################################## 7 | 8 | 9 | ############################################################## 10 | # 11 | # Test targets 12 | # 13 | ############################################################## 14 | 15 | ###### Place all generic definitions here ###### 16 | 17 | # This defines tests which run tools of the same name. This is simply for convenience to avoid 18 | # defining the test name twice (once in TOOL_ROOTS and again in TEST_ROOTS). 19 | # Tests defined here should not be defined in TOOL_ROOTS and TEST_ROOTS. 20 | TEST_TOOL_ROOTS := Corelan_HeapLog 21 | 22 | # This defines the tests to be run that were not already defined in TEST_TOOL_ROOTS. 23 | TEST_ROOTS := 24 | 25 | # This defines a list of tests that should run in the "short" sanity. Tests in this list must also 26 | # appear either in the TEST_TOOL_ROOTS or the TEST_ROOTS list. 27 | # If the entire directory should be tested in sanity, assign TEST_TOOL_ROOTS and TEST_ROOTS to the 28 | # SANITY_SUBSET variable in the tests section below (see example in makefile.rules.tmpl). 29 | SANITY_SUBSET := 30 | 31 | # This defines the tools which will be run during the the tests, and were not already defined in 32 | # TEST_TOOL_ROOTS. 33 | TOOL_ROOTS := 34 | 35 | # This defines the static analysis tools which will be run during the the tests. They should not 36 | # be defined in TEST_TOOL_ROOTS. If a test with the same name exists, it should be defined in 37 | # TEST_ROOTS. 38 | # Note: Static analysis tools are in fact executables linked with the Pin Static Analysis Library. 39 | # This library provides a subset of the Pin APIs which allows the tool to perform static analysis 40 | # of an application or dll. Pin itself is not used when this tool runs. 41 | SA_TOOL_ROOTS := 42 | 43 | # This defines all the applications that will be run during the tests. 44 | APP_ROOTS := 45 | 46 | # This defines any additional object files that need to be compiled. 47 | OBJECT_ROOTS := 48 | 49 | # This defines any additional dlls (shared objects), other than the pintools, that need to be compiled. 50 | DLL_ROOTS := 51 | 52 | # This defines any static libraries (archives), that need to be built. 53 | LIB_ROOTS := 54 | 55 | 56 | ############################################################## 57 | # 58 | # Test recipes 59 | # 60 | ############################################################## 61 | 62 | # This section contains recipes for tests other than the default. 63 | # See makefile.default.rules for the default test rules. 64 | # All tests in this section should adhere to the naming convention: .test 65 | 66 | 67 | ############################################################## 68 | # 69 | # Build rules 70 | # 71 | ############################################################## 72 | 73 | # This section contains the build rules for all binaries that have special build rules. 74 | # See makefile.default.rules for the default build rules. 75 | -------------------------------------------------------------------------------- /win32/createpintool.py: -------------------------------------------------------------------------------- 1 | # 2 | # Quick 'n dirty script to create a new Pin Tool 3 | # corelanc0d3r 4 | # www.corelan.be 5 | # 6 | # Place this file in the source/tools folder of your pin installation 7 | # and run it from there 8 | 9 | import os, sys, shutil 10 | 11 | 12 | def create_pin_project(projectname): 13 | print "[+] Creating new PIN project %s" % projectname 14 | print " - Copying clean project" 15 | currentfolder = os.getcwd() 16 | projectsource = os.path.join(currentfolder,"MyPinTool") 17 | newproject = os.path.join(currentfolder,projectname) 18 | shutil.copytree(projectsource,newproject) 19 | print "[+] Updating project files" 20 | dirList = os.listdir(newproject) 21 | for fname in dirList: 22 | currentfile = os.path.join(newproject,fname) 23 | newfilename = fname.replace("MyPinTool",projectname) 24 | print " - Processing %s -> %s" % (fname,newfilename) 25 | filecontents = open(currentfile,"rb").read() 26 | os.remove(os.path.join(newproject,fname)) 27 | updatedcontents = filecontents.replace("MyPinTool",projectname) 28 | objfile = open(os.path.join(newproject,newfilename),"wb") 29 | objfile.write(updatedcontents) 30 | objfile.close() 31 | print "[+] Done" 32 | return 33 | 34 | 35 | 36 | # main 37 | projectname = "" 38 | if len(sys.argv) > 1: 39 | projectname = sys.argv[1] 40 | else: 41 | print "Please provide a destination Pin project name" 42 | sys.exit() 43 | 44 | create_pin_project(projectname) --------------------------------------------------------------------------------