├── Inject_FScript.workflow └── Contents │ ├── Info.plist │ ├── QuickLook │ └── Preview.png │ └── document.wflow ├── README.md ├── pic1.png └── pic2.png /Inject_FScript.workflow/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSServices 6 | 7 | 8 | NSMenuItem 9 | 10 | default 11 | Inject_FScript 12 | 13 | NSMessage 14 | runWorkflowAsService 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Inject_FScript.workflow/Contents/QuickLook/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamnemecek/FScriptAnywhere/faafc445aec5518c95d9ceac5388e5ec32d79704/Inject_FScript.workflow/Contents/QuickLook/Preview.png -------------------------------------------------------------------------------- /Inject_FScript.workflow/Contents/document.wflow: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AMApplicationBuild 6 | 381 7 | AMApplicationVersion 8 | 2.4 9 | AMDocumentVersion 10 | 2 11 | actions 12 | 13 | 14 | action 15 | 16 | AMActionVersion 17 | 1.2.1 18 | AMApplication 19 | 20 | TextEdit 21 | 22 | AMParameterProperties 23 | 24 | enteredRTFDData 25 | 26 | enteredRTFDText 27 | 28 | enteredText 29 | 30 | 31 | AMProvides 32 | 33 | Container 34 | Single 35 | Types 36 | 37 | com.apple.cocoa.attributed-string 38 | 39 | 40 | AMRequiredResources 41 | 42 | ActionBundlePath 43 | /System/Library/Automator/Get Specified Text.action 44 | ActionName 45 | Get Specified Text 46 | ActionParameters 47 | 48 | enteredRTFDData 49 | 50 | cnRmZAAAAAADAAAAAgAAAAcAAABUWFQucnRm 51 | AQAAAC6QAQAAKwAAAAEAAACIAQAAe1xydGYx 52 | XGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYx 53 | MjY1CntcZm9udHRibFxmMFxmc3dpc3NcZmNo 54 | YXJzZXQwIEhlbHZldGljYTt9CntcY29sb3J0 55 | Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1 56 | O30KXHBhcmRcdHg1NjBcdHgxMTIwXHR4MTY4 57 | MFx0eDIyNDBcdHgyODAwXHR4MzM2MFx0eDM5 58 | MjBcdHg0NDgwXHR4NTA0MFx0eDU2MDBcdHg2 59 | MTYwXHR4NjcyMFxwYXJkaXJuYXR1cmFsCgpc 60 | ZjBcZnMyNCBcY2YwIGF0dGFjaCBwaWRub25j 61 | ZVwKcCAoY2hhcilbW05TQnVuZGxlIGJ1bmRs 62 | ZVdpdGhQYXRoOkAiL0xpYnJhcnkvRnJhbWV3 63 | b3Jrcy9GU2NyaXB0LmZyYW1ld29yayJdIGxv 64 | YWRdXApwICh2b2lkKVtGU2NyaXB0TWVudUl0 65 | ZW0gaW5zZXJ0SW5NYWluTWVudV1cCmRldGFj 66 | aFwKcXVpdH0BAAAAIwAAAAEAAAAHAAAAVFhU 67 | LnJ0ZhAAAADXmHVStgEAAAAAAAAAAAAA 68 | 69 | enteredRTFDText 70 | 71 | enteredText 72 | attach pidnonce 73 | p (char)[[NSBundle bundleWithPath:@"/Library/Frameworks/FScript.framework"] load] 74 | p (void)[FScriptMenuItem insertInMainMenu] 75 | detach 76 | quit 77 | 78 | BundleIdentifier 79 | com.apple.GetSpecifiedText 80 | CFBundleVersion 81 | 1.2.1 82 | CanShowSelectedItemsWhenRun 83 | 84 | CanShowWhenRun 85 | 86 | Category 87 | 88 | AMCategoryText 89 | 90 | Class Name 91 | AMGetSpecifiedTextAction 92 | Keywords 93 | 94 | Get 95 | Text 96 | 97 | OutputUUID 98 | 7D9853CB-34AA-471E-8252-B450EDABC325 99 | UUID 100 | 3642A3EE-C413-49F6-9F6A-F583B9D460FC 101 | UnlocalizedApplications 102 | 103 | TextEdit 104 | 105 | arguments 106 | 107 | 0 108 | 109 | default value 110 | 111 | name 112 | enteredRTFDText 113 | required 114 | 0 115 | type 116 | 0 117 | uuid 118 | 0 119 | 120 | 1 121 | 122 | default value 123 | 124 | name 125 | enteredText 126 | required 127 | 0 128 | type 129 | 0 130 | uuid 131 | 1 132 | 133 | 134 | isViewVisible 135 | 136 | location 137 | 769.500000:734.000000 138 | nibPath 139 | /System/Library/Automator/Get Specified Text.action/Contents/Resources/English.lproj/main.nib 140 | 141 | isViewVisible 142 | 143 | 144 | 145 | action 146 | 147 | AMAccepts 148 | 149 | Container 150 | List 151 | Optional 152 | 153 | Types 154 | 155 | com.apple.cocoa.string 156 | com.apple.cocoa.attributed-string 157 | 158 | 159 | AMActionVersion 160 | 2.2.1 161 | AMApplication 162 | 163 | Finder 164 | TextEdit 165 | 166 | AMParameterProperties 167 | 168 | checkedForDefaultEncoding 169 | 170 | newFileFolderPath 171 | 172 | isPathPopUp 173 | 174 | variableUUIDsInMenu 175 | 176 | 177 | newFileName 178 | 179 | tokenizedValue 180 | 181 | lldbtmp.txt 182 | 183 | 184 | newFileTextEncoding 185 | 186 | replaceExistingFiles 187 | 188 | textFormat 189 | 190 | 191 | AMProvides 192 | 193 | Container 194 | List 195 | Types 196 | 197 | com.apple.cocoa.path 198 | 199 | 200 | ActionBundlePath 201 | /System/Library/Automator/New Text File.action 202 | ActionName 203 | New Text File 204 | ActionParameters 205 | 206 | checkedForDefaultEncoding 207 | 208 | newFileFolderPath 209 | /tmp 210 | newFileName 211 | lldbtmp.txt 212 | newFileTextEncoding 213 | 30 214 | replaceExistingFiles 215 | 216 | textFormat 217 | 1 218 | 219 | BundleIdentifier 220 | com.apple.Automator.NewTextFile 221 | CFBundleVersion 222 | 2.2.1 223 | CanShowSelectedItemsWhenRun 224 | 225 | CanShowWhenRun 226 | 227 | Category 228 | 229 | AMCategoryText 230 | 231 | Class Name 232 | AMNewTextFileAction 233 | InputUUID 234 | 256613C1-D8BB-466B-B28C-9D6A893F868F 235 | Keywords 236 | 237 | Create 238 | Make 239 | File 240 | Text 241 | Save 242 | New 243 | Document 244 | 245 | OutputUUID 246 | 5FA32C61-F482-494D-89C9-78C866B36A2D 247 | UUID 248 | BEBA46C5-5F37-4C4D-8F05-8F824380D041 249 | UnlocalizedApplications 250 | 251 | Finder 252 | TextEdit 253 | 254 | arguments 255 | 256 | 0 257 | 258 | default value 259 | 0 260 | name 261 | newFileTextEncoding 262 | required 263 | 0 264 | type 265 | 0 266 | uuid 267 | 0 268 | 269 | 1 270 | 271 | default value 272 | 0 273 | name 274 | replaceExistingFiles 275 | required 276 | 0 277 | type 278 | 0 279 | uuid 280 | 1 281 | 282 | 2 283 | 284 | default value 285 | ~/Desktop 286 | name 287 | newFileFolderPath 288 | required 289 | 0 290 | type 291 | 0 292 | uuid 293 | 2 294 | 295 | 3 296 | 297 | default value 298 | 0 299 | name 300 | checkedForDefaultEncoding 301 | required 302 | 0 303 | type 304 | 0 305 | uuid 306 | 3 307 | 308 | 4 309 | 310 | default value 311 | Untitled.txt 312 | name 313 | newFileName 314 | required 315 | 0 316 | type 317 | 0 318 | uuid 319 | 4 320 | 321 | 5 322 | 323 | default value 324 | 0 325 | name 326 | textFormat 327 | required 328 | 0 329 | type 330 | 0 331 | uuid 332 | 5 333 | 334 | 335 | isViewVisible 336 | 337 | location 338 | 769.500000:567.000000 339 | nibPath 340 | /System/Library/Automator/New Text File.action/Contents/Resources/Base.lproj/main.nib 341 | 342 | isViewVisible 343 | 344 | 345 | 346 | action 347 | 348 | AMAccepts 349 | 350 | Container 351 | List 352 | Optional 353 | 354 | Types 355 | 356 | com.apple.applescript.object 357 | 358 | 359 | AMActionVersion 360 | 1.0.2 361 | AMApplication 362 | 363 | Automator 364 | 365 | AMParameterProperties 366 | 367 | source 368 | 369 | 370 | AMProvides 371 | 372 | Container 373 | List 374 | Types 375 | 376 | com.apple.applescript.object 377 | 378 | 379 | ActionBundlePath 380 | /System/Library/Automator/Run AppleScript.action 381 | ActionName 382 | Run AppleScript 383 | ActionParameters 384 | 385 | source 386 | tell application "System Events" set pid to unix id of the first process whose frontmost is true end tell do shell script "sed -e \"s/pidnonce/" & pid & "/\" /tmp/lldbtmp.txt > /tmp/lldbtmp2" do shell script "lldb --source=/tmp/lldbtmp2" 387 | 388 | BundleIdentifier 389 | com.apple.Automator.RunScript 390 | CFBundleVersion 391 | 1.0.2 392 | CanShowSelectedItemsWhenRun 393 | 394 | CanShowWhenRun 395 | 396 | Category 397 | 398 | AMCategoryUtilities 399 | 400 | Class Name 401 | RunScriptAction 402 | InputUUID 403 | 9F812B9F-8D05-4C04-8824-D030517EA818 404 | Keywords 405 | 406 | Run 407 | 408 | OutputUUID 409 | 5669B2E1-8E7A-4F0C-B6CE-E168CC2C5142 410 | UUID 411 | F3252616-F413-405E-BB3B-B6BC41F756B0 412 | UnlocalizedApplications 413 | 414 | Automator 415 | 416 | arguments 417 | 418 | 0 419 | 420 | default value 421 | on run {input, parameters} 422 | 423 | (* Your script goes here *) 424 | 425 | return input 426 | end run 427 | name 428 | source 429 | required 430 | 0 431 | type 432 | 0 433 | uuid 434 | 0 435 | 436 | 437 | isViewVisible 438 | 439 | location 440 | 769.500000:387.000000 441 | nibPath 442 | /System/Library/Automator/Run AppleScript.action/Contents/Resources/English.lproj/main.nib 443 | 444 | isViewVisible 445 | 446 | 447 | 448 | connectors 449 | 450 | 1E3FAAEC-3521-4A6B-B52B-E6A89B73F425 451 | 452 | from 453 | BEBA46C5-5F37-4C4D-8F05-8F824380D041 - BEBA46C5-5F37-4C4D-8F05-8F824380D041 454 | to 455 | F3252616-F413-405E-BB3B-B6BC41F756B0 - F3252616-F413-405E-BB3B-B6BC41F756B0 456 | 457 | 6036ACF1-979B-4FD9-B73F-8B86CA06104D 458 | 459 | from 460 | 3642A3EE-C413-49F6-9F6A-F583B9D460FC - 3642A3EE-C413-49F6-9F6A-F583B9D460FC 461 | to 462 | BEBA46C5-5F37-4C4D-8F05-8F824380D041 - BEBA46C5-5F37-4C4D-8F05-8F824380D041 463 | 464 | 465 | state 466 | 467 | AMLogTabViewSelectedIndex 468 | 1 469 | libraryState 470 | 471 | actionsMajorSplitViewState 472 | 473 | expandedPosition 474 | 100 475 | subviewState 476 | 477 | 0.000000, 0.000000, 381.000000, 765.000000, NO 478 | 0.000000, 765.000000, 381.000000, 0.000000, YES 479 | 480 | 481 | actionsMinorSplitViewState 482 | 483 | expandedPosition 484 | 0.0 485 | subviewState 486 | 487 | 0.000000, 0.000000, 163.000000, 765.000000, NO 488 | 164.000000, 0.000000, 217.000000, 765.000000, NO 489 | 490 | 491 | variablesMajorSplitViewState 492 | 493 | expandedPosition 494 | 136 495 | subviewState 496 | 497 | 0.000000, 0.000000, 381.000000, 438.000000, NO 498 | 0.000000, 439.000000, 381.000000, 135.000000, NO 499 | 500 | 501 | variablesMinorSplitViewState 502 | 503 | expandedPosition 504 | 0.0 505 | subviewState 506 | 507 | 0.000000, 0.000000, 163.000000, 438.000000, NO 508 | 164.000000, 0.000000, 217.000000, 438.000000, NO 509 | 510 | 511 | 512 | majorSplitViewState 513 | 514 | expandedPosition 515 | 0.0 516 | subviewState 517 | 518 | 0.000000, 0.000000, 381.000000, 810.000000, NO 519 | 382.000000, 0.000000, 812.000000, 810.000000, NO 520 | 521 | 522 | minorSplitViewState 523 | 524 | expandedPosition 525 | 0.0 526 | subviewState 527 | 528 | 0.000000, 0.000000, 812.000000, 619.000000, NO 529 | 0.000000, 629.000000, 812.000000, 162.000000, NO 530 | 531 | 532 | windowFrame 533 | {{168, 141}, {1193, 887}} 534 | workflowViewScrollPosition 535 | {{0, 91}, {797, 619}} 536 | 537 | variables 538 | 539 | 540 | UUID 541 | DC46E3D6-EF96-4102-A2AE-62455150A1D0 542 | identifier 543 | com.apple.Automator.Variable.Storage 544 | name 545 | Nome do Aplicativo 546 | 547 | 548 | workflowMetaData 549 | 550 | serviceInputTypeIdentifier 551 | com.apple.Automator.nothing 552 | serviceOutputTypeIdentifier 553 | com.apple.Automator.nothing 554 | serviceProcessesInput 555 | 0 556 | workflowTypeIdentifier 557 | com.apple.Automator.servicesMenu 558 | 559 | 560 | 561 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | F-Script Anywhere for Mac OS X Mavericks (10.9), Yosemite (10.10), El Capitan (10.11) 2 | =============== 3 | 4 | ##Description## 5 | This repository contains an updated F-Script Anywhere Automator workflow compatible with Mac OS X Mavericks. In Mavericks, GDB was retired and therefore this workflow uses LLDB instead. The original F-Script Anywhere for Snow Leopard was written by Silvio H. Ferreira. 6 | 7 | ##What is F-Script?## 8 | [F-Script](https://en.wikipedia.org/wiki/F-Script_\(programming_language\)) is a Smalltalk inspired programming language. F-Script's runtime can be injected into running processes and allows for interactive exploration of running processes. It is therefore a great tool e.g. for debugging or reverse engineering. 9 | You can see F-Script in action [here](http://www.youtube.com/watch?v=SNVnoulAHbg). 10 | 11 | ##How to install## 12 | You have to have F-Script installed in order to use this workflow (install from [here](http://www.fscript.org/download/download.htm)). After unpacking the F-Script zip file, copy the `FScript.framework` to `/Library/Frameworks`. Then install this workflow. After launching an application into which you want to inject F-Script, open the main application menu, select `Services` and click `Inject_FScript` as shown on the image below. 13 | 14 | ![inject_fscript](https://raw.github.com/adamnemecek/FScriptAnywhere/master/pic1.png) 15 | 16 | A new item `F-Script` should appear on the top menu bar as shown on the image below. You can then launch the F-Script environment. 17 | 18 | ![inject_fscript](https://raw.github.com/adamnemecek/FScriptAnywhere/master/pic2.png). 19 | 20 | ##Other considerations## 21 | For whatever reason the F-Script console treats the input of a single straight quotation mark `'` as a curved unicode quotation mark `‘`. In order to input e.g. a string literal (which is in F-Script delimited by two single straight quotation marks), one must input the straight quotation mark using a key combination `control` + `'`. 22 | 23 | __Update__(Jul 23, 2015): It appears that the quote issue has been fixed in [recent versions of F-Script](https://github.com/Kentzo/F-Script/releases). 24 | -------------------------------------------------------------------------------- /pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamnemecek/FScriptAnywhere/faafc445aec5518c95d9ceac5388e5ec32d79704/pic1.png -------------------------------------------------------------------------------- /pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adamnemecek/FScriptAnywhere/faafc445aec5518c95d9ceac5388e5ec32d79704/pic2.png --------------------------------------------------------------------------------