在单步跟踪telock试了n次的时候发现,如果strongod选择了skip some exceptions之后单步,会被检测到,
如果选择skip some exceptions但是直接执行能顺利执行。
具体位置是
00404083 50 push eax
00404084 33C0 xor eax, eax
00404086 64:FF30 push dword ptr fs:[eax]
00404089 64:8920 mov dword ptr fs:[eax], esp
0040408C CC int3
0040408D 90 nop
0040408E 8BC0 mov eax, eax
00404090 F9 stc
00404091 90 nop
00404092 8D045D 34120000 lea eax, dword ptr [ebx*2+1234]
00404099 F8 clc
0040409A 90 nop
0040409B C1EB 05 shr ebx, 5
这里的int3断点进入0x004040c5的异常处理程序之后,退出时直接就被检测到了。
被检测的情况下,异常处理退出到
00404AE4 F8 clc
00404AE5 0F83 1A010000 jnb 00404C05
00404AEB 8D85 840A0000 lea eax, dword ptr [ebp+A84]
00404AF1 894424 04 mov dword ptr [esp+4], eax
00404AF5 64:67:8926 0000 mov dword ptr fs:[0], esp
00404AFB E9 F9000000 jmp 00404BF9
00404B00 EB 1F jmp short 00404B21
00404B02 838B 6424088B 6>or dword ptr [ebx+8B082464], 6C
00404B09 24 08 and al, 8
00404B0B 8D85 AF0A0000 lea eax, dword ptr [ebp+AAF]
00404B11 50 push eax
00404B12 EB 02 jmp short 00404B16
00404B14 CD20 81B5591C vxdjump 1C59B581
00404B1A 0000 add byte ptr [eax], al
00404B1C ^ 7E 89 jle short 00404AA7
00404B1E B8 DAC32BC0 mov eax, C02BC3DA
00404B23 74 02 je short 00404B27
00404B25 CD20 CC90E9D7 vxdjump D7E990CC
正常的应该是在int3的处理完成之后进入
00404090 F9 stc
00404091 90 nop
00404092 8D045D 34120000 lea eax, dword ptr [ebx*2+1234]
00404099 F8 clc
0040409A 90 nop
0040409B C1EB 05 shr ebx, 5
0040409E FC cld
0040409F 90 nop
004040A0 C1C0 07 rol eax, 7
004040A3 90 nop
004040A4 90 nop
004040A5 33DB xor ebx, ebx
004040A7 F7F3 div ebx
这个位置。单步要进入这个位置,不能选择skip some exceptions。
壳是很老的壳了,但是新手不会,想学一下,找到讲telock的帖子了,想弄清楚的是od被检测到的原因。之前是因为一直被检测过不去,困扰了很久,尝试了n次终于找到是strongod的选项设置不对被检测出来,但是还想弄懂原理。
直接运行会出现(不选中skip some exceptions)出现
telock里面有一句lea eax,eax非法指令,那个错误提示的eip就是指向这条指令,需要进行另一个异常处理程序才能正确执行,但是这一句非法指令是在上面的代码后面才出现的,和壳的检测有什么关系呢。
另外好像把所有插件都删除只装strongod单步走的话还是被检测到。我装的插件是
,不知道是不是兼容问题。
Hello.rar
[课程]FART 脱壳王!加量不加价!FART作者讲授!