Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An issue of libdft(libdft_core.c) #4

Open
mcgrady1 opened this issue Apr 13, 2017 · 6 comments
Open

An issue of libdft(libdft_core.c) #4

mcgrady1 opened this issue Apr 13, 2017 · 6 comments

Comments

@mcgrady1
Copy link

mcgrady1 commented Apr 13, 2017

Hi,
(1) Some types of instruction, for example movdqu, which would influence the taint analysis result , are ignored by libdft, so how can you get the right taint result?
(2) XADD instruction, source operand could be a memory operand?(xadd_m2r)
Thanks for your reply!

@tosanjay
Copy link
Contributor

Hi,
Please note that libdft does not have full support of all x86 instructions, including SSE, thus it does not handle instructions involving xmm reg. to my understanding, XADD does not have src as mem.

@mcgrady1
Copy link
Author

Hi,
(1)I know, but some programs will use SSE, which will influence the taint and fuzzing result
(2)You are right, so the xadd_m2r_xxx function may be wrong, can you check the source code?

@vivek425ster
Copy link
Collaborator

vivek425ster commented Apr 16, 2017

Hi,
Regarding you second point the xadd_m2r_xxx analysis is specific to instructions which have memory operand as destination, the naming convention is such as the first m specifies the destination operand type and second r specifies the src operand type.
https://github.com/vusec/vuzzer/blob/master/support/libdft/src/libdft_core.c#L7114. Please check here that we call that analysis routine when the first operand (destination operand) is memory .

@mcgrady1
Copy link
Author

mcgrady1 commented Apr 17, 2017

source coe:
tag_t dst_tag = thread_ctx->vcpu.gpr[dst][1];
tag_t src_tag = tag_dir_getb(tag_dir, src);

thread_ctx->vcpu.gpr[dst][1] = tag_combine(dst_tag, src_tag);
tag_dir_setb(tag_dir, src, dst_tag);

xadd instruction:
Temporary = Source + Destination;
Source = Destination;
Destination = Temporary;

I don't think this code is correct.

@lzyplayer
Copy link

lzyplayer commented Jul 19, 2017

HI,
I 'm deploying vuzzer on exactly the same platform as suggested. while changing flags,i found out makefile.libdft is presented on vuzzer/support directory ,not under the vuzzer/support/libdft.

Also,i think a "#" is missing(the 4th flag) in makeflie.libdft, something wrong happened while generating?
Thanks for your reply!

@vivek425ster
Copy link
Collaborator

Hi,

You need to run the command make support-libdft from the top folder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants