Exetools

Exetools (https://forum.exetools.com/index.php)
-   Community Tools (https://forum.exetools.com/forumdisplay.php?f=47)
-   -   ArkDasm (https://forum.exetools.com/showthread.php?t=15279)

typedef 10-31-2013 21:20

A Python scripting interface would be good, with breakpoints that can trigger scripts at certain points in execution. Good job on the debugger though.

cyberbob 11-06-2013 03:03

v0.4.0 released

+ added File ¨C Produce assembly text file
+ added possibility to create byte array type
+ added new command: dup
+ minor improvements

cyberbob 12-08-2013 22:23

v0.5.0 released

added possibility to create subroutine
added subroutine stack data (arguments, local variables) recognition
added hex view window
minor bugfixes and usability improvements

Here is a screenshot how stack data recognition may look like http://arkdasm.com/stackdata.png

It's possible to rename stack data after pressing n key.

MarcElBichon 03-21-2014 03:08

v0.6.0 released

What's new:
added structure support for global data
added new commands: del_struct, struct, ls
updated Qt to 5.2.1
minor improvements, bug fixes

MarcElBichon 04-08-2014 00:16

ArkDasm v0.7.0
2014-04-06

Changelog:
Quote:

- added new commands: extnd, lst, fold, unfold
- minor improvements, bug fixes
Download:
Quote:

http://www.arkdasm.com/arkdasm.zip

jvoisin 08-21-2014 01:01

Are you planning to release the source code one day?

cyberbob 08-21-2014 05:27

Quote:

Originally Posted by jvoisin (Post 93876)
Are you planning to release the source code one day?

sorry, at the moment no plans to release the source code

MarcElBichon 09-29-2014 00:32

ArkDasm v0.8.0
2014-09-28

Main features:
- parsing PE32+ imports, exports, resources
- subroutine stack data (arguments, local variables) recognition
- loading local debug symbols (.pdb file) using IDA
- multiline comments support
- bookmarks support
- python script support
- possibility to save, load database

Changelog:
Quote:

- added python script support
- added command line support
- added new command: py
- minor improvements, bug fixes
Download:
Quote:

http://www.arkdasm.com/arkdasm.zip

cyberbob 04-16-2015 22:54

v.1.0.0 released - www.arkdasm.com

+ added debugger capabilities
+ added new commands: bp, ba
+ switched to the Capstone disasm engine
+ updated Qt to 5.4.0
+ switched to Visual Studio 2013
+ minor improvements, bug fixes

switched to Visual Studio 2013 so run-times (msvcp120.dll, msvcr112.dll) are required http://www.microsoft.com/en-us/download/details.aspx?id=40784

mr.exodia 04-17-2015 03:56

Hey,

Nice seeing you added debugger capabilities! I have a few questions if you don't mind :)

What is this 'DIA' thing you are talking about to load symbols? Is it open source? I could not find it anywhere (though maybe my search terms were off).

And could you maybe give me some pointers as to how you recognize functions and local variables? Do you scan all instructions and populate a nice graph or do you do a linear scan with some algorithms to detect functions or maybe a combination? I am interested in this because I want to implement some of this in x64dbg :)

Another small thing, is the arrow location just 'wrong' or is is placed between instructions for a reason? See this screenshot: http://prntscr.com/6ukf81

On and before I forget it, could you share some insight on how you implemented these python functions? I saw the python libs, but do you have some trick to auto generate the required function definitions or is it all manual work?

Greetings

cyberbob 04-17-2015 05:51

Quote:

Originally Posted by mr.exodia (Post 99070)
What is this 'DIA' thing you are talking about to load symbols? Is it open source?

it's open source, comes with Visual Studio you should have it in VS path e.g. "c:\Program Files (x86)\Microsoft Visual Studio 12.0\DIA SDK\Samples"

Quote:

Originally Posted by mr.exodia (Post 99070)
And could you maybe give me some pointers as to how you recognize functions and local variables?

first I scan to find begin and the end of the function (it's not always an easy task) and then just 'walk' the function marking, recording instructions related to stack pointer.

Quote:

Originally Posted by mr.exodia (Post 99070)
Another small thing, is the arrow location just 'wrong' or is is placed between instructions for a reason?

there is no reason, it's calculated based on QFontMetrics lineSpacing. Please change font to get hopefully more accurate position but personally it did not bother me that its a millimeter off.

Quote:

Originally Posted by mr.exodia (Post 99070)
On and before I forget it, could you share some insight on how you implemented these python functions? I saw the python libs, but do you have some trick to auto generate the required function definitions or is it all manual work?

it's manual work but you could use SWIG if you have a lot of functions.

Cheers

maktm 04-17-2015 21:01

I forgot what it's called or where I read this but there are 2 methods in which you can analyse the binary to find all the functions. The first method is to scan each and every function then link them together, but the other method is to analyse the instruction line by line and when you identify a function you check for calls inside of it and then go into that new function (inside of the main function) and then repeat the process. This means that if you had something like :

;function prologue
call xxx
;function epilogue

it would follow the call, identify the function and if it had another function the keep repeating it. In the end it would return back to the main function then continue line by line analysis.

What method do you use for this?

Sorry if this sounds vague or confusing.

Btw I saw this project on /r/reverseengineering first so it's getting around a lot. good job :)

cyberbob 04-17-2015 21:49

Quote:

Originally Posted by maktm (Post 99090)
What method do you use for this?

I use the second method (if I understood you correctly). I follow call instructions.

mr.exodia 04-18-2015 06:37

I plan on combining both linear search and a recursive search to also detect unused functions (and maybe evade some techniques like below). The problem I'm having is how to represent the instructions as a data structure...

redbull 04-27-2015 19:17

Good to see this project is still going! Good work cyberbob.


All times are GMT +8. The time now is 18:52.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX