

1.6 Alpha's
#1
Posted 14 August 2012 - 05:49 PM
Mostly internal changes have been done so far:
*Dropped support for 32-bit architecture. Bit Slicer now requires 10.6 or later, and a 64-bit Intel Mac.
*Code signed. Friendly to Gatekeeper in Mountain Lion. Bit Slicer does not have to run as root anymore, and will bother you less about asking for your password.
*With that, I was able to finally enable document auto-saving.
*Improved process handling (determining when processes launch and terminate), and changed a bit how it works. When a process terminates, Bit Slicer will never randomly select another process now. Removed 'locking/unlocking' target option.
*Improved search performance a lot when choosing to search between a beginning and ending address.
*Fixed extra newline character for string representation of copying variable's in the table onto the clipboard.
*Code refactoring, turning ARC on, adding mach_port_deallocate() cleanup, tweaked memory viewer UI slightly, changed over to BSD open source license.
Bit Slicer alpha 1.6 alpha 1
#2
Posted 21 August 2012 - 10:22 AM
#3
Posted 22 August 2012 - 02:54 PM
gamnark, on 21 August 2012 - 10:22 AM, said:
I can't seem to reproduce this on a non-admin account, but I don't have a 10.6.8 machine lying around (although someone told me it has ran on his 10.6 machine, although most likely an admin account). What error did you get (if any?). Did it allow you to authenticate? If it did, what process/application was targeted in Bit Slicer? You can try this later alpha and see if the problem persists. [EDIT]: Also, does anything show up in Console app (spotlight it) if you filter for Bit Slicer?
#4
Posted 25 August 2012 - 07:58 AM
When it first launches, it targets the Finder by default, and asks to authenticate. After I enter the authentication, when I choose most other apps and it says "Failed accessing (whichever app)".
Some seem to work, I can target the Dock without the error for example. I don't see anything that matches in the console app.
#5
Posted 01 September 2012 - 08:22 PM
Changes since alpha 1:
*Refined memory viewer, removed 'size' field, now you just enter an address you want to go to. Improved scrolling too.
*In-built calculator expressions are evaluated a little more carefully.
*Removed a bit of authorization that was unnecessary (only one dialog will should show up now).
*Improved performance for watching variables, especially strings.
*Printing out error messages to console if a process failed to be accessible, for debugging purposes.
*Fixed bug where changing variable's type may not update the variable's display value if the variable becomes inaccessible (eg: at the end of a virtual page with a size too long).
@gamnark: I had someone on 10.6.8 test it on a guest account and it seemed to work for him, so this is an odd problem.. I can't access some processes like loginwindow, although I think that's a normal case. If you go to Console app again, this build should spit out errors if you search for bit slicer. If you open Activity Monitor, the process ID's there should match with the process ID's in Bit Slicer (next to the process' name). Otherwise, maybe try restarting the computer and see if that changes anything.
#6
Posted 27 December 2012 - 04:47 AM
Changes:
*Made optimizations to improve searching speed, including splitting work into separate tasks for initial search
*Inserted a "Data Inspector" in Memory menubar for the memory viewer; you can select a number of bytes and it will show you integer or float representation
*Can toggle between hex and base-10 notations for memory viewer addresses
*Fixed bug with reading one less character with 1-byte string (bug introduced in last alpha likely)
#7
Posted 04 January 2013 - 08:02 AM
Download
*Implemented Disassembler Viewer (and can edit byte arrays that show, and NOP instructions)
*Implemented "Watch Variable Change" feature (hardware watchpoints basically). Select a variable in a document, Tools -> Watch for Variable Changes. When variable changes, a new one will be added reflecting the instruction that changed that variable.
*Implemented contextual menu items for documents table (and disassembler). Can NOP instruction from document.
*Implemented Undo/Redo for changing memory protection in a document
*Implemented new way of detecting existing processes; Bit Slicer should show more processes than it did before, including child processes created by Terminal for example.
*Fixed bug where memory viewer may not auto-update if opened from an application launch restoration.
*Improved process detection handling with memory viewer.
*Slightly increased variable type column width.
*Scanning unwritable values is off by default now.
[EDIT]: Had uploaded new build since this post, fixing a couple of things.
[EDIT2]: Had uploaded another build again, fixing an instruction alignment bug when watching variables.
#8
Posted 22 January 2013 - 08:38 AM
Download
*Bit Slicer will now automatically change and revert protection attributes if the user wants to write to a variable whose protection is not marked as writable
*Fixed bug that made processes not show up if they were being manipulated by a debugger.
*You can add instruction breakpoints in the disassembler. Once a breakpoint is hit, you can continue, step into, step over to resume the process.
*You can jump to an address when a breakpoint is hit.
*You can view and modify the registers when a breakpoint is hit.
*Attempt to fix bug that gamnark had by limiting use of calling task_for_pid, although this is not very easy to reproduce.
*Improved process handling since last alphas such that Bit Slicer will consume less CPU usage in normal cases, and possibly also fixed a related crash.
*Added more contextual menu support for disassembler and document windows.
*Can copy instructions from disassembler and registers window to a document table.
*Improved narrow-search speed significantly, i.e, 10 second narrowing down search could take < 1 second.
*Disassembler can now view code that is not marked executable (eg, dynamically loaded branch tables)
*Added "Read or write" watchpoints (now called 'accesses' in the UI).
Appreciate any feedback for what works, and what bugs there may be. I've been working on this almost constantly lately.
#9
Posted 25 January 2013 - 11:50 PM
*Fixed CPU spike idling bug when bit slicer has scanned many variables.
*Canceling searches should be much more responsive; deallocation of temporarily allocated variables is handled on a separate thread
*Clearing should be more responsive; again, deallocation is handled on separate thread
*Scanning stored values should be faster as better search algorithm is being used.
*Disassembler and Register table rows are now draggable and droppable onto a slice document table.
*When watching for variable accesses, the name of the variable added is now the instruction text.
Download
#10
Posted 26 January 2013 - 04:33 PM
I have suggestion for the "watch Variable" function,
The function stop automatically when he found the first instruction read/write the address. Because of this, If i search an other instruction, its can't possible to find.
I suggest to remplace it by a "Stop watch" button.
And why Watch variable have "Write Accesses", "Read & Write Accesses" and not "Read Accesses" ?
For the memory viewer, with the minium width of the window, each line show 4x 32 bit + 2 byte,
like "CFFAEDFE 07000001 03000080 02000000 1500" for exemple, its a little disturbing. 4x 32 bit would be more correct.
Thanks for this great memory tools for the mac !
#11
Posted 30 January 2013 - 03:11 AM
SlicerMan, on 26 January 2013 - 04:33 PM, said:
I have suggestion for the "watch Variable" function,
The function stop automatically when he found the first instruction read/write the address. Because of this, If i search an other instruction, its can't possible to find.
I suggest to remplace it by a "Stop watch" button.
That's a good point. I'm considering changing this to like you described. Bit Slicer would add each different instruction it encounters until the user stops.
SlicerMan, on 26 January 2013 - 04:33 PM, said:
Hardware supports "write" and "read and write" watchpoints, but it doesn't support "just reading" although I have not looked into how hard this would be to simulate.
SlicerMan, on 26 January 2013 - 04:33 PM, said:
like "CFFAEDFE 07000001 03000080 02000000 1500" for exemple, its a little disturbing. 4x 32 bit would be more correct.
Resize the window to get it show the way you want. I could constrain it so it's impossible to resize it in a way where it would display unevenly.
Thanks for the feedback!
#12
Posted 04 February 2013 - 01:12 AM
*When watching instructions, the user now has to stop the process. This way, bit slicer can report multiple instructions that accessed an address.
*Stepping over an instruction should now respect the base pointer of the stack, thus should work properly with recursive functions.
*Moved memory protection and dumping memory to memory viewer component rather than slice documents.
*Improved tooltips for hovering over variables in a slice table. Now shows name, value, address formula, size in bytes, and protection attributes.
*Fixed bug where you could store all values even though target isn't alive.
*Added 'Store all Values' in the functions list.
*Pausing/Unpausing processes now works from memory viewer and disassembler. Disabled if the process hit a breakpoint via disassembler.
*Memory viewer can now only be resized such that number of bytes per line is divisible by 4.
*Added user notifications for OS X 10.8 users for when searches finish, breakpoints hits via disassembler, dumping all memory finished, and when a watchpoint hits.
Download
#14
Posted 13 February 2013 - 04:35 AM
*Added backtrace view when breakpoint is hit, turned registers panel into a part of the window (split view).
*Added debug symbols to disassembler if they're available.
*Stepping out of a function should respect the stack frame now.
*Breakpoints cannot be added, and one cannot step over/out into an area, whose protection isn't executable. If user desires to do so, change memory protection of the area using memory viewer. (Fixes running target from crashing).
*Added 'Copy Address' and 'Show in Memory Viewer' items (latter for disassembler window).
*Freezing variables now makes value text red instead of address.
*Experimental app icon.
[EDIT]: Quickly uploaded a version with a minor fix.
[EDIT2]: Another update:
*Fixed UI issues with displaying current address that is breakpoint'ed.
*Fixed backtrace-selection not changing disassembler view in certain case.
#15
Posted 15 February 2013 - 05:19 PM

#16
Posted 19 February 2013 - 09:10 AM
Also, a new alpha:
Alpha 24:
- Added an assembler for modifiying instructions in the debugger. Eg: can change "sub ..." to "add ..."
- Watching current target terminate should be a little more reliable now
- Undo/Redo'ing byte array changes should now work better when the array sizes change, in debugger and documents
- If atos (used for debug symbols) is not found on user's machine, user is given an alert indicating so.
- Added Sparkle for updating now.
- Code signed frameworks and helper tools
#17
Posted 04 March 2013 - 03:53 AM
Alpha 28:
- Hopefully fixed rare-ish crash that occurred when performing a search
- Fixed bug where Sparkle may not automatically notify user of an update
- Search button is now changed to Store if function is Store All Values
- Added back and forward navigation to memory viewer and debugger
- Added menu item (to best of its ability) to go the function referenced by the currently selected call type instruction
- When setting a breakpoint or stepping over/out into a page whose protection isn't marked executable, we now automatically mark it executable before creating the breakpoint
- When scrolling all the way up or down in the debugger, new rows are added to the table as needed
- When going to an address in the debugger that is already in the table, we just go to it instead of disassembling all instructions again
- Fixed bug when the memory viewer window size may slowly grow each time it's shown
- Fixed resizing issues with the data inspector in the memory viewer
- Improved validation for checking if a variable can be shown in the disassembler or memory viewer
- When watching for variable accesses more than one time (i.e, watch, cancel, watch again), new results may have not been added; fixed this bug
- When modifying an instruction's text via the assembler, if the new instruction takes smaller or larger amount of space, we nop the leftover bytes to preserve alignment (and show an alert if we are overwriting more than one instruction)
- Added an alert to clear all variables in a document, as it's too easy to do accidently and the action is not un-doable
- Now pairing task_threads() with a mach_vm_deallocate() call
- Testing to see if updating notification will work
#18
Posted 09 March 2013 - 08:40 AM
- Hopefully fixed rare-ish crash that occurred when performing a search (again)
- Fixed raised-exception when copying a variable in a document (bug was introduced in last alpha)
- Implemented dragging variables from one document to another (this copies them). Trying to do this before actually caused a crash
- Improved performance and fixed crash with watching variable accesses where many accesses were hit frequently
- Validation for showing a variable in the debugger from a document only checks if its protection is readable now
- Autosaving is disabled if Bit Slicer is run as superuser for whatever reason
- Fixed back and forward navigation for memory viewer, causing it to show wrong addresses when going from one region to another
- When a user makes a search and only one variable is returned back, the table now becomes in focus
- Changed "Data type:" to "Data Type:" in document window
- Tons of refactoring
- Created a project page, a wiki, and a bug tracker on bitbucket. The help menu now redirects to the wiki
#19
Posted 11 March 2013 - 01:42 PM
Thanks for making Bit Slicer.
#20
Posted 12 March 2013 - 04:57 AM
[EDIT]:
And here's the alpha:
Alpha 30
- Fixed a couple possible crashes when performing searches (one of them was introduced in last alpha likely)
- Preventing possible crash with the calculator evaluating an expression
- Search progress should be more accurate now
- Improved narrow-search performance slightly
- Prioritizing the selected instructions when going back and forth in debugger (making this less confusing to use)
- When asked to overwrite multiple instructions in debugger, cancel is now the default button to hit
- Fixed 32-bit integer not being default (must have messed this up recently)
- Making Scan Unwritable Values enabled by default again
- Nearing towards final release.
#21
Posted 12 March 2013 - 12:25 PM
Are you aware of any major memory leaking bugs with Bit Slicer? If, using the latest alpha you just posted, I open Bit Slicer and enter "0" into the "Value" field, leaving all other settings at the default (signed 32-bit Integer, "= Value" and the target being "Skype (20707)"), and click "search", the app starts eating memory at a rate of ½GB per second until the progress bar nearly reaches full at which point it slows down but the search never completes (it finds something like 50,000,000 values). Although the Bit Slicer window stays very responsive (almost no beach-balling) the "Cancel" button doesn't seem to work at that point. It becomes grayed out as if clicked, but the other controls don't become available and the app continues to consume more memory, albeit at a much slower rate.
I had similar issues with previous alphas.
I'm using OS X 10.6.8 (64-bit) and Skype 2.8.0.866.
#22
Posted 12 March 2013 - 07:27 PM
#23
Posted 12 March 2013 - 07:43 PM
#24
Posted 13 March 2013 - 08:04 AM
what_are_answers, on 12 March 2013 - 07:43 PM, said:
You can try this build here (don't have time to publish it to Sparkle/automatic-updating right now). Canceling should be more immediate for first search in this build. The more results the search generates, the longer it'll be to deallocate all the memory that was allocated (you can still use the app while it's deallocating though). This build also tries to fix the assembler (modifying instructions's text in debugger) not working on certain systems.
#25
Posted 14 March 2013 - 06:52 AM
- Fixed (hopefully) assembler not working on some systems; that is, altering instruction's text in debugger.
- Fixed bug where in certain scenarios Bit Slicer would fail to detect when running target terminated
- Cancelling searches should have a slightly more immediate effect
- Added an alert for attempting to search zero on the first scan for seeing what values are equal with default begin/end markers because this is usually a bad idea, currently
#26
Posted 14 March 2013 - 01:24 PM
#27
Posted 14 March 2013 - 07:28 PM
#28
Posted 14 March 2013 - 07:38 PM
#29
Posted 26 March 2013 - 07:14 PM
#30
Posted 01 April 2013 - 08:04 PM
Zorg, on 30 January 2013 - 03:11 AM, said:

0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users