h_one 发表于 2013-4-23 17:27

anti_debug (关于对int3 检查)

小菜一直在吾爱上索取,第一次发帖,希望能对一些朋友有帮助,若是大牛可以return


   使用工具: od, peid等
   peid查壳没壳, 看看导入表 貌似这个crackme比较简单的

   od走一遍,下断GetDlgItemTextA(401142处)

   call 401221 对假吗处理      
    后面有一个call 401241跟进看看
   

跟进call401296 为mov al, cc(有反调试,对断点的检查我刚在401142下了断点注意)
继续跟吧跟出401221 ,看这段走完是什么


发现若eax = 0 走向正确的提示,那就跟的这样走吧。

回到前面那个地方
如图:

以上面的分析要使ecx等于0 (mov eax, ecx)
mov edi, 00401120
add edi, 0B (定位到内存中方数据地方)
mov esi, offest 00403284(假码计算后的结果)
mov ecx, 9
dec ecx
lods byte ptr (取esi所指向的空间中取出一个字节,放到al中)
scas byte ptr (edi所指向的字节与相应的al值相减)
je 跳回到dec ecx

呵呵因此就构造与0040112B所指向的相等(8字节长)
mov al, 字节
rol   al, 5
xoral, 15
重新输入我算出的结果发现不对,,,,,,nandao,,这条路是骗人的,是int 3在做怪。。。。

重头再来,注意想到会对断点的检查
继续对GetDlgItemTextA下断(401142地址)

进入401241仔细分析

lea edi, [<ModuleEntryPoint>] (401000)
mov ecx, 297(检查字节个数)
call 00401296 (mov al, cc)
repne scas byte ptr 扫描edi指向的字节,是否等于CC,
运行该句,发现ecx = 154
说明从401000开始,第142处为CC
刚才我在401142下断了,,,会产生CC.....


同理后面是对一系列的函数是否下断检查
若检查到有断点会返回。没有断点时403240中的值+1
所以为了避免程序检测到断点,而又能让我们的程序断下来,,,那么在检查前找个地方断下来
我找的 40109E
程序断下来后将断点删除,,,,,,,终于上路了,,,,
跟踪发现会有四处调用了call 00401241 对断点的检查,,那么403240值最终会变成4

到,, call 401201 对假码运算处理


mov al, zijie
xor al, 41
rolal, 3
mov zijie, al

地址401198处
moveax, 5
mul byte ptr (eax*4)定位到正真密码处理后的结果
mov esi, offset 00403268(假码处理位置)
mov edi, 00401175
add edi, eax   定位到正真密码位置
mov ecx, 9
dec ecx
lods byte ptr
scas byte ptr
je 跳到dex ecx
or ecx, ecx
jz 004011E1   当假码处理后的结果与edi指向的结果依依相等时,使ecx = 0,,,跳转到正确框



哈哈搞定了。。。。
edi 内存中的正确数据:91 71 39A9 41 11 21 03
所以把这个数据逆推就搞定了。。。。。
__asm
{
    xoreax, eax
    moval,zhengquezijie
    ror    al,3
    xor    al, 0x41
    movjieguo, al
}

按照这个结果为softice!      


总结:对int 3,断点的检查,关键汇编
lea edi, [<ModuleEntryPoint>] (401000)
mov ecx, 297(检查字节个数)
call 00401296 (mov al, cc)
repne scas byte ptr 扫描edi指向的字节,是否是al = CC,

los指令 从ds:si所指向想的空间中取出一个字节放入al中
scas 从 es:di 所指向字节,与相应的al想减,,所得到的差来设置有关标志位。。。。。。

bambooqj 发表于 2013-4-23 17:33

膜拜~!{:17_1075:}

Rookietp 发表于 2013-4-23 17:43

建议楼主重新排版,这排版看得实属蛋疼.

专卖小七 发表于 2013-4-23 17:47

{:1_924:}卤煮,已然成为大牛,膜拜一下。

Chief 发表于 2013-4-23 17:51


欢迎继续分析分享好文章,排版可以稍微整齐点
加精鼓励,吾爱有你更精彩。

混小子 发表于 2013-4-23 17:53

最好有 anti 的实现算法

pojie668 发表于 2013-4-23 17:54

好利害的呀,学习了

niucaidi 发表于 2013-4-23 18:10

OD这把大刀舞得好没有软件破不掉啊!膜拜!

real金龟子 发表于 2013-4-23 18:58

楼主英明!楼至威武!楼主是大牛!向楼主学习!

JoyChou 发表于 2013-4-23 19:55

混小子 发表于 2013-4-23 17:53 static/image/common/back.gif
最好有 anti 的实现算法

http://www.52pojie.cn/thread-193736-1-1.html
页: [1] 2 3
查看完整版本: anti_debug (关于对int3 检查)