-
-
[旧帖] [求助]逆向分析软件中碰到的问题 0.00雪花
-
发表于: 2013-12-13 11:54 1495
-
在逆向分析一个软件的过程中,碰到如下的反调试问题
用ollydbg加载该软件后,软件停在了00403B80处:
00403B80 >/$ /E9 00000000 jmp 00403B85
00403B85 |> \E9 00000000 jmp 00403B8A
00403B8A |> 55 push ebp
00403B8B |. 89E5 mov ebp, esp
00403B8D |. 53 push ebx
00403B8E |. 56 push esi
00403B8F |. 57 push edi
00403B90 |. 81EC 70020000 sub esp, 270
此时的eip指向00403B80,也就是下一条指令的地址
然而当我按一下单步调试时,软件就跳转到了以下界面
0367FF75 9C pushfd
0367FF76 68 54FD6703 push 367FD54
0367FF7B E8 60FDFFFF call 0367FCE0
0367FF80 9D popfd
0367FF81 61 popad
0367FF82 81C4 E4020000 add esp, 2E4
0367FF88 - E9 F33BD8FC jmp LogIC.<模块入口点>
此时的eip指向了0367FF75,而不是指向本应该指向的00403B85
这是为什么呢?是怎么实现的?如何破解这个反调试呢?
我发现这个软件的每一条指令当单步执行时都会跳到类似的界面,pushfd,popfd
貌似是用pushfd和popfd构建了一个反调试的环境。
这个原理是什么呢?
我在网上搜了一下,貌似跟这个反调试相关的内容:
int3
pushfd
和
int3
popfd
一样的效果。
只要修改int3后面的popfd为其他值,OD都能通过。老掉牙的技术又重新被用了。SEH异常机制的运用而已。
原理:
在SEH异常处理中设置了硬件断点DR0=EIP+2,并把EIP的值加2,那么应该在int3,popfd后面的指令执行时会产生单步异常。但是OD遇到前面是popfd/pushfd时,OD会自动在popfd后一指令处设置硬件断点,而VMP的seh异常处理会判断是否已经设置硬件断点,如果已经有硬件断点就不产生单步异常,所以不能正常执行。
只是我还没有搞明白,呵呵,有没有相关的书籍介绍呀
软件的下载地址在http://www.logicomep.com/assets/downloads/logic201e4.exe
用ollydbg加载该软件后,软件停在了00403B80处:
00403B80 >/$ /E9 00000000 jmp 00403B85
00403B85 |> \E9 00000000 jmp 00403B8A
00403B8A |> 55 push ebp
00403B8B |. 89E5 mov ebp, esp
00403B8D |. 53 push ebx
00403B8E |. 56 push esi
00403B8F |. 57 push edi
00403B90 |. 81EC 70020000 sub esp, 270
此时的eip指向00403B80,也就是下一条指令的地址
然而当我按一下单步调试时,软件就跳转到了以下界面
0367FF75 9C pushfd
0367FF76 68 54FD6703 push 367FD54
0367FF7B E8 60FDFFFF call 0367FCE0
0367FF80 9D popfd
0367FF81 61 popad
0367FF82 81C4 E4020000 add esp, 2E4
0367FF88 - E9 F33BD8FC jmp LogIC.<模块入口点>
此时的eip指向了0367FF75,而不是指向本应该指向的00403B85
这是为什么呢?是怎么实现的?如何破解这个反调试呢?
我发现这个软件的每一条指令当单步执行时都会跳到类似的界面,pushfd,popfd
貌似是用pushfd和popfd构建了一个反调试的环境。
这个原理是什么呢?
我在网上搜了一下,貌似跟这个反调试相关的内容:
int3
pushfd
和
int3
popfd
一样的效果。
只要修改int3后面的popfd为其他值,OD都能通过。老掉牙的技术又重新被用了。SEH异常机制的运用而已。
原理:
在SEH异常处理中设置了硬件断点DR0=EIP+2,并把EIP的值加2,那么应该在int3,popfd后面的指令执行时会产生单步异常。但是OD遇到前面是popfd/pushfd时,OD会自动在popfd后一指令处设置硬件断点,而VMP的seh异常处理会判断是否已经设置硬件断点,如果已经有硬件断点就不产生单步异常,所以不能正常执行。
只是我还没有搞明白,呵呵,有没有相关的书籍介绍呀
软件的下载地址在http://www.logicomep.com/assets/downloads/logic201e4.exe
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
- [求助][推荐]请网上的大拿推荐本好的入门web安全的书籍 941
- [求助]如何将这个程序脱壳 7258
- [求助]逆向分析软件中碰到的问题 1496
- [求助]软件破解过程中的问题 1514
看原图
赞赏
雪币:
留言: