能力值:
(RANK:350 )
|
-
-
2 楼
|
能力值:
( LV12,RANK:250 )
|
-
-
3 楼
谢谢推荐的技术文档,很有帮助哩!
发现里面说的更简单的技术实现同样的效果。
mov eax,2
cmp eax,3
je junk
mov eax,offset @F
jmp eax
junk:
db 0e8h
@@:
有几个问题是:
因为花指令需要用在多处,则标签的定义很麻烦。
还是有很明显的jmp让人起疑。会让人有心关注跳转位置。
我想,再把这个加到myjmp函数里.......
这样,把myjmp函数搞花后。call指令回跳一般不会让人生疑,嘿嘿。而且myjmp又不那么明显。
两种类型的花指令集合,嘿嘿,反汇编器更晕了........
而且也会让人脑迷惑的时间更长一点....
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
楼主的体会对我很有帮助,收下慢慢研究.
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我看到了 收获了 所以 我也要顶
|
能力值:
(RANK:570 )
|
-
-
6 楼
只要知道静态分析的局限在哪里,构造花指令是很容易的
|
能力值:
( LV12,RANK:250 )
|
-
-
7 楼
在上篇文章里我用call花指令实现迷惑IDA与OD。相关代码如下:
myjmp proc
pop eax
add eax,ecx
push eax
ret
myjmp endp
start:
mov ecx,offset @F- $ -10
call myjmp
db '花指令乱码'
@@:;.........正常指令继续
那么,我们是不是可以丰富一下这个花指令,使它的欺骗性更高呢?或者加入一些指令对付动态调试?
[思路来源]:
1、一般破解教程告诉我们,call指令后面如果紧接着test eax,eax&jz/jnz指令,那么建议在后面两条指令下断,可以得到一些关键提示。
2、对于一般的动态调试断点,调试器会把原指令处代码改成int 3,执行到此处时中断再恢复原指令。
嘿嘿,有没有想到什么?!我们也可以在我们花指令后加入test/jcc指令,以达到欺骗效果。骗得跟踪者在这两条指令下断。
中断是下了,可以怎么也等不到中断。因为程序永远也不会执行到这里。相关实现很简单:
myjmp proc
pop eax
add eax,ecx
push eax
ret
myjmp endp
start:
mov ecx,offset @F- $ -10
call myjmp
test eax,eax
jz $+10
db '花指令'
@@:;.........正常指令继续
而这时候我们会想,既然跟踪者很可能在后面两个指令下断,那我们能不能针对这个现象反击一下跟踪者哩?
嘿嘿,太阴险的想法了:P,答案是:可以实现。只要在myjmp里加入检测后面两条指令数据是否为0xcc(即int 3),一旦检测到。我们操纵程序流程跑飞程序!
具体实现如下:
myjmp proc
pop edx
xor eax,eax
mov al,byte ptr [edx] ;这里开始检测后面两条指令是否为int 3
cmp al,0cch
setz al ;这里使用了Pentinum pro的条件设置指令集以使条件判断不影响流水线。所以注意测试时的CPU是否支持。一般来说都支持啦。
shl eax,8
mov al,byte ptr [edx+1]
cmp al,0cch
setz al
shl eax,8
mov al,byte ptr [edx+2]
cmp al,0cch
setz al
shl eax,8
mov al,byte ptr [edx+3]
cmp al,0cch
setz al
test eax,eax
setnz al
add edx,eax ;一旦被下断,eax必定不为0,这样,程序便会跑飞。
add edx,ecx
push edx
ret
myjmp endp
start:
mov ecx,offset @F- $ -10
call myjmp
test eax,eax
jz $+10
db '花指令垃圾'
@@:;.........正常指令继续
这里,请注意,加入垃圾数据后,最好自己反汇编或跟踪下,看看效果,有时候加入的垃圾数据正好结束,正常指令正好开始,还是会暴露后面的关键指令的。
------
顺便提一下:其实如果仔细跟踪,破解花指令很简单,把垃圾数据都nop掉,再分析,正常指令便出来了。嘿嘿。但这需要:耐心++
不敢藏私。赶紧拿出来分享。欢迎交流、拍砖。谢谢!
|
能力值:
( LV13,RANK:410 )
|
-
-
8 楼
会用IDA脚本的直接无视
|
能力值:
( LV13,RANK:530 )
|
-
-
9 楼
不会用澳~~~那个类C脚本太难用了
语言等级高不成低不就~~~要嘛用Basic或者python,lua这些
要嘛还不如就用OD的asm 脚本还实际点 弄个C来.除了把麻烦的地方全部继承下来
好用的地方一个也没有~~~Class没得用
std:: 没有办法调用~~~这种C不知道有啥用的说~
在加上用notepad.exe写脚本实在影响发挥的说。。。
希望多弄点IDA脚本的教程哦
|
能力值:
(RANK:570 )
|
-
-
10 楼
貌似有python的
月中人翻译的某一篇文章有提过
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
支持下吧 虽然看不懂
|
能力值:
( LV13,RANK:530 )
|
-
-
12 楼
有是有~问题是不是官方支持的~
而且你也知道IDA的通病~
插件不具有IDA版本兼容性.
|
能力值:
( LV13,RANK:410 )
|
-
-
13 楼
有python的。有大牛更新
|
能力值:
( LV12,RANK:250 )
|
-
-
14 楼
是啊,5.0的idc连add_bpt都没有,没有这个怎么动态调呢。
5.1的才有。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
学习中...看起来..很有意思!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
初学,还是有些看不明白,但收获还是有的
|
能力值:
( LV9,RANK:490 )
|
-
-
17 楼
学习哈~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
高招,…………!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
还行,这样的话用OD下断,可能就很痛苦了
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
如果我下硬件断点呢
|
能力值:
(RANK:210 )
|
-
-
21 楼
学习学习
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
学习中!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
谢谢楼主,学习学习!
|
能力值:
( LV4,RANK:50 )
|
-
-
24 楼
myjmp: pop edx ;返回地址 pop ecx ;参数@nByte push esi pushf @@: mov esi,$ cld rep lodsb mov ecx,offset @B sub esi,ecx add edx,esi popf pop esi push edx ret
start: db 6Ah db offset @F- $ -6 call myjmp db '花指令乱码' @@: invoke GetModuleHandle,NULL mov hInstance,eax
pop ecx ;参数@nByte ->指的是'花指令乱码'的大小吗?LZ还没有push,怎么就pop呢
|
|
|