mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
GP-3507: Create attachable sleep specimen for gdb
This commit is contained in:
parent
47eb06416c
commit
4b0bd5ce12
3 changed files with 31 additions and 1 deletions
|
@ -31,7 +31,7 @@ public enum GdbLinuxSpecimen implements DebuggerTestSpecimen, DebuggerModelTestU
|
|||
SLEEP {
|
||||
@Override
|
||||
String getCommandLine() {
|
||||
return "sleep 100000";
|
||||
return DummyProc.which("expTraceableSleep");
|
||||
}
|
||||
},
|
||||
FORK_EXIT {
|
||||
|
|
|
@ -57,6 +57,7 @@ task testSpecimenLinux_x86_64 {
|
|||
//dependsOn 'expTypesExecutable'//Linux_x86_64Executable'
|
||||
dependsOn 'expRegistersLinux_x86_64Executable'
|
||||
dependsOn 'expStackLinux_x86_64Executable'
|
||||
dependsOn 'expTraceableSleepExecutable'//Linux_x86_64Executable'
|
||||
|
||||
doLast {
|
||||
exec {
|
||||
|
@ -133,6 +134,9 @@ model {
|
|||
targetPlatform "win_x86_64"
|
||||
targetPlatform "win_x86_32" // TODO: Test on these
|
||||
}
|
||||
expTraceableSleep(NativeExecutableSpec) {
|
||||
targetPlatform "linux_x86_64"
|
||||
}
|
||||
}
|
||||
|
||||
binaries {
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* Our own version of sleep that tells Yama it's okay to be traced
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
|
||||
sleep(100);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue