All Projects → DavidBuchanan314 → Tardis

DavidBuchanan314 / Tardis

Licence: mit
Trace And Rewrite Delays In Syscalls: Hooking time-related Linux syscalls to warp a process's perspective of time, using ptrace.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Tardis

Proot
chroot, mount --bind, and binfmt_misc without privilege/setup for Linux
Stars: ✭ 933 (+547.92%)
Mutual labels:  syscalls, ptrace
PRoot
chroot, mount --bind, and binfmt_misc without privilege/setup for Linux
Stars: ✭ 31 (-78.47%)
Mutual labels:  ptrace, syscalls
Ptracer
A library for ptrace-based tracing of Python programs
Stars: ✭ 136 (-5.56%)
Mutual labels:  syscalls, ptrace
Write A Strace And Gdb
A tiny system call tracer and debugger implementation
Stars: ✭ 93 (-35.42%)
Mutual labels:  syscalls, ptrace
As Duration
Extraction of ActiveSupport::Duration from Rails
Stars: ✭ 126 (-12.5%)
Mutual labels:  time
Gitlab Time Tracker Taskbar
🦊🕘 A crossplatform menubar/taskbar application for GitLabs time tracking feature. Currently in BETA!
Stars: ✭ 127 (-11.81%)
Mutual labels:  time
Ruby Duration
Immutable type that represents some amount of time with accuracy in seconds.
Stars: ✭ 122 (-15.28%)
Mutual labels:  time
Lora Serialization
LoraWAN serialization/deserialization library for The Things Network
Stars: ✭ 120 (-16.67%)
Mutual labels:  time
Khook
Linux Kernel hooking engine (x86)
Stars: ✭ 144 (+0%)
Mutual labels:  hooking
Time Machine
Travel through time in your tests.
Stars: ✭ 143 (-0.69%)
Mutual labels:  time
Tzupdate
Set the system timezone based on IP geolocation
Stars: ✭ 130 (-9.72%)
Mutual labels:  time
Orbit
C/C++ Performance Profiler
Stars: ✭ 2,291 (+1490.97%)
Mutual labels:  hooking
Tail.datetime
A lightweight, translat- and configurable Open Source DateTime Picker, written in pure vanilla JavaScript!
Stars: ✭ 139 (-3.47%)
Mutual labels:  time
Sweep
Extending broom for time series forecasting
Stars: ✭ 143 (-0.69%)
Mutual labels:  time
Myutils
🙏 提供时间轴转星座|生肖工具、系统存储空间获取工具、文件大小格式化工具、获取指定文件大小工具、AES加密解码工具(支持android端平台加密解密,java端和android端相互加密解密)、SharePreference操作工具、 File文件操作工具、日期获取和计算工具、界面跳转Intent操作工具、字符串验证和数值转换操作工具、手机震动工具、系统资源操作工具、网络检测工具、 wifi操作工具、单位换算工具、zip压缩和解压操作工具、XML解析操作工具(只支持几种指定格式)、图片加载和处理工具,数据库操作(增删改查)工具、Base64编码解码工具、MD5加密工具。
Stars: ✭ 130 (-9.72%)
Mutual labels:  time
Ticktock
A timezone data management library for the JVM and Android targeting java.time APIs in Java 8+
Stars: ✭ 122 (-15.28%)
Mutual labels:  time
Delorean
Delorean: Time Travel Made Easy
Stars: ✭ 1,793 (+1145.14%)
Mutual labels:  time
Napchart
Drag-and-drop time-planning library using HTML5 and the canvas element
Stars: ✭ 129 (-10.42%)
Mutual labels:  time
Rust Jack
Decent jack bindings for rust
Stars: ✭ 128 (-11.11%)
Mutual labels:  time
Jhtalib
Technical Analysis Library Time-Series
Stars: ✭ 131 (-9.03%)
Mutual labels:  time

TARDIS

Trace And Rewrite Delays In Syscalls: Hooking time-related Linux syscalls to warp a process's perspective of time.

This code is rather buggy, mainly due to my lack of understanding of the ptrace API. You probably shouldn't use it for anything serious, although it could be useful for testing/debugging certain applications.

Things to try:

$ ./tardis 10000 10000 xclock
$ ./tardis 1 3 glxgears
$ ./tardis 1 -1 glxgears
$ ./tardis 10 10 firefox
$ ./tardis 10 10 /bin/sh

xclock demo

Notes:

  • Currently only x86_64 Linux is supported. It should be possible to port to i386 with fairly minimal effort.

  • I used PTRACE_SEIZE, which only exists since kernel version 3.4.

  • novdso.so is preloaded to prevent libc from using vDSO - otherwise ptrace(PTRACE_SYSCALL, ...) wouldn't work for those syscalls (Take a look at man vdso for more information). You might need to modify the LD_PRELOAD value to be an absolute path for some programs/environments, I only made it relative for simplicity.

  • Certain simple programs, like glxgears, don't mind being run with time flowing in reverse! Most programs don't however, and of course there's no way to have a negative delay.

  • There are many more syscalls that I still need to handle.

Currently handled syscalls:

  • nanosleep
  • clock_nanosleep
  • select
  • poll
  • gettimeofday
  • clock_gettime
  • time
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].