绕过svc 反调试的问题


#1

大家好,请问一下有关绕过SVC反调试的问题。
如下图所示,该程序中有一条svc #0x80的指令,调试该程序时,执行到这一步程序会退出。


我将该条指令修改为nop,如下图。

程序在执行到下图中的 BLR x8 处时报错。

34

报错如下:

请问这是什么原因呢?应该如何解决这个问题呢?非常感谢!

另外还想请问一下如何hook动态库呢?对应的plist文件中应该如何写呢?谢谢!


#2

svc指令不是用来进入内核态的么


#3

是的,这里用作反调试 是通过 内联 svc + syscall + ptrace 来实现的,相当于使用 syscall(SYS_ptrace, PT_DENY_ATTACH, 0, 0, 0)


#4


绕过syscall的之前早就说过了,问问题的时候可以先搜索一下之前的


#5

syscall绕过我知道,这篇文章我也看了,因为这个程序是通过内联svc来做的,单纯的通过文章中的那些方法,在我的测试中并没有用。。。 另外,还想请问一下如何Hook一个动态库呢?对应的plist文件应该如何写呢?请问您知道吗?非常感谢!


#6

没试过,我是菜鸡,等大神回复把


#7

呃。。。谢谢您的回复


#8

HookZz单指令hook或者无脑静态nop SVC 0X80


#9

您好,帖子当中提到我nop替换该条svc指令后报错,报错如帖子中的最后一张图所示。HooZz框架,我用了作者的AntiDebugByPass模块,只是输出了svc指令,没有hook成功。。。 另外,请问如何hook一个dylib呢?plist文件应该怎么写呀?谢谢您


#10

没看出这个ptrace和那个blr x8有什么直接关系


#11

谢谢您的回复。我也不知道。。。就修改了这一条指令,程序在那个地方就报错了。没修改前,可以正常运行,只是不能调试。请问svc除了直接nop之外还有什么办法可以绕过吗?


#12

你应该调试看看x8的来源,而不是乱猜


#13

好的谢谢您,我调试看看