首页
社区
课程
招聘
[下载]open source Windows debugger这个东西一定要发的.
发表于: 2006-12-10 22:03 9092

[下载]open source Windows debugger这个东西一定要发的.

2006-12-10 22:03
9092
http://www.phenoelit.de
Introduction
(dum(b)ug) is a full open source Windows debugger core, implemented as C++ class architecture for instant debugger creation in the Win32 environment. It supports a number of features, including:

Full encapsulation of the Win32 debug API
PE file format parsing (.exe, .dll files)
Codeview, COFF and FPO debug symbol support (no PDB yet)
Single-shot soft breakpoints and automatic restore of original code
Single stepping
Disassembly using a libdisasm Windows port, including jump prediction
Handling of exceptions, breakpoints and other important stuff either by specification of call-back functions or by overloading virtual prototypes provided in the class in case you prefer to inherit the functionality.

ltrace for Windows
ltrace for Windows - here named "(dum(b)ug) tracer" is a library call tracer supporting the logging of calls to library or program functions to automatically identify function arguments and results, hereby aiding quick auditing of closed source code for the use of insecure functions. This is a example implementation for the (dum(b)ug) core.
How it works
The (dum(b)ug) tracer works by specifying the function prototypes that are supposed to be traced and then attaching the tracer to the process in question or loading the process. The function prototypes are specified in a trace definition file. Example:
int printf( char *, char *);
"haxor" == int sprintf( [out] char *buffer, [in] fmtchar *format);

This example illustrates a number of concepts (dum(b)ug) tracer uses:

You can specify plain C notation function prototypes
You can name arguments for more readable output
It supports argument directions. Specification of [in] will cause the argument to be inspected in depth only when the function is entered, [out] only then the function returns and [both] or no direction information causes inspection in both cases. This allows you to ignore uninitialized buffers, for example the output buffer of a sprintf() call.
You can perform output matching on the returned buffer (or the first [out] char buffer, in case the return value is not a char* or wchar* buffer). This way, you will only see functions whose result contains this string
Variable number of arguments such as with sprintf(char *, char *, ...) is not supported and you have to rely on the actual output
wchar type is supported and the output is tailored to be ASCII again
The following types are supported:
char - a single character
char* - a char buffer
fmtchar* - a char string being a format string
int - a 32bit integer
int* - a pointer to a 32bit integer
void - nothing
void* - arbirary 32bit pointer
wchar - a single wide character
wchar* - a wchar buffer
fmtwchar* - a wchar string begin a format string

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
COOL,捡到宝了
2006-12-10 22:13
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
支持

虽说看源代码比看反汇编代码好。但是我发现最近看不惯高级语言的代码。。

感觉调试器最重要的还是反汇编,脚本和插件功能。如果也可能提供这样的功能就好了
2006-12-11 09:57
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
我一直认为, 除非必要,否则还是看高级语言的原码(如果是学习汇编例外), 这样更更快的了解程序思想.
2006-12-21 00:29
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
最初由 笨笨雄 发布
支持

虽说看源代码比看反汇编代码好。但是我发现最近看不惯高级语言的代码。。

感觉调试器最重要的还是反汇编,脚本和插件功能。如果也可能提供这样的功能就好了


或许是你看多了汇编语言,对高级语言生疏了吧.
高级语言很大程度上隐藏了硬件平台的特性,对CPU指令经行了封装.你看不管目前的高级语言,莫非你正在开发Z#?
阅读别人文件的反汇编,那是迫于无法阅读到高级语言的源码.
2006-12-21 19:23
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
6
这个东西好,谢谢楼主分享!
2006-12-25 09:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不知道是什么东东,不过貌似好东东,还是支持~
2006-12-29 10:01
0
游客
登录 | 注册 方可回帖
返回
//