![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
人而已
这个作者很懒,什么都没留下…
展开
-
与Linux相比,Windows不存在标准输入输出等概念。
由于使用了GUI 由于使用了GUI,windows程序是不支持标准输入输出的,即没有stdout、stdin、cout、cin这些东西。 必须使用标准C/C++的头文件,才能使用标准输入输出。原创 2021-06-02 07:11:28 · 233 阅读 · 0 评论 -
Linux反调试小记(三)
接着上面的文章,继续讨论关于Linux的反调试技术。 七:检查进程运行状态 调试器可以通过attach到某个已有进程的方法进行调试。这种情况下,被调试进程的父进程便不是调试器了。 在这种情况下,我们可以通过直接检查进程的运行状态来判断是否被调试。而这里使用到的依然是/proc文件系统。具体地,我们检查/proc/self/status文件。 当由非调试状态转变为调试状态时,进程状态由sleeping变为tracing stop,TracerPid也由0变为非0的数,即调试器的PID。由此,我们便可通过.原创 2021-05-23 09:22:22 · 1177 阅读 · 0 评论 -
Linux反调试小记(二)
四、利用环境变量 在Linux中,bash有一个环境变量叫$_,它保存的是上一个执行的命令的最后一个参数。如果在被跟踪的状态下,这个变量的值会发生变化。下面是可能产生变化的几种情况: 程序名 参数argv[0] 环境变量getenv("_") shell ./test ./test strace ./test /usr/bin/strace ltrace ./test /usr/bin/ltrace gdb /home/user/te原创 2021-05-13 23:08:48 · 247 阅读 · 0 评论 -
为什么ptrace的PTRACE_ATTACH后面要有waitpid
ptrace的PTRACE_ATTACH将尝试附加到pid指定的进程上。附加成功后,目标进程将处于挂起状态。此时被跟踪进程将会发送SIGSTOP信号给跟踪者。跟踪者需要调用waitpid(2)以接收被跟踪进程传来的SIGSTOP信号。 如果不调用waipid,那么程序会直接僵尸。 ...原创 2021-05-23 09:28:24 · 1091 阅读 · 0 评论 -
利用sprintf和sscanf实现十六进制和十进制之间的相互转换(转载)
( 在日常应用过程中,经常遇到二进制转换的问题,正好看到有这个非常简单的转换方法,记录下来,方便以后使用。) #include <stdio.h> int main() { char s[100] = {0}; sprintf(s, "%x", 15); printf("%s\n", s); // f char str[100] = "f"; int i = 0; sscanf(str, "%x", &i); printf("%d\n", i); // 15转载 2021-04-27 22:38:22 · 747 阅读 · 0 评论