首页
社区
课程
招聘
[分享]Asprotect SKE 2.2 的Advanced Import protection保护技术
发表于: 2006-4-7 16:38 46601

[分享]Asprotect SKE 2.2 的Advanced Import protection保护技术

2006-4-7 16:38
46601
收藏
免费 0
支持
分享
最新回复 (91)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
76
研究研究
2006-8-9 21:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
77
正在?此?,正好可供?考,著著版主!
2006-8-12 08:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
78
值得收藏的文章!
2006-8-15 00:09
0
雪    币: 1309
活跃值: (232)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79
看了又看
2006-8-15 00:26
0
雪    币: 441
活跃值: (149)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
80
花了几个小时间才读懂,并照做修复了一个程序。
谢谢!!
2006-8-31 14:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
81
好好,又可以学习了
2006-8-31 21:22
0
雪    币: 284
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
82
00C5001F    0000               add     byte ptr [eax], al                      ; 0c500c0得手工填上,0c500c0+4处也得填上(存放那些下一句被抽的API的CALL)
这一段看不明白,0c500c0处应该填上什么,0c500c0+4的地方又应该填什么?请高手指点一下吧?
2006-9-15 22:54
0
雪    币: 50161
活跃值: (20665)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
83
注释是指这句:
00C50021      mov     edi, 0C500C0

0C500C0 你可以选一个空白地址,是一个变量,用以存放一个地址指针。
2006-9-15 22:59
0
雪    币: 284
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
84
这个方法能否适用于ASProtect SKE 2.3的0626版,我根据这个办法做了,没有成功,在开始获得地址表时,发现大部分可以正确获得,但有一部分获得的地址的第一位是8,比如00401105,获取的是80401105,通过跟踪发现是在修复代码的第一行call    edx
       01240002    60    pushad     
出的问题,只要返回的值是0,则可以正确获取,如果返回的值是1,则获取的地址前面就加上了8,这是一个问题,再一个问题就是在第二步修复时
           mov     eax, dword ptr [C500C0]                 ;  指向待处理的地址列表
00C50005    8B18               mov     ebx, dword ptr [eax]
00C50007    81E3 FFFFFF7F      and     ebx, 7FFFFFFF
00C5000D    FFE3               jmp     ebx
00C5000F    0000               add     byte ptr [eax], al
00C50011    0000               add     byte ptr [eax], al
00C50013    0000               add     byte ptr [eax], al
00C50015    0000               add     byte ptr [eax], al
00C50017    0000               add     byte ptr [eax], al
00C50019    0000               add     byte ptr [eax], al
00C5001B    0000               add     byte ptr [eax], al
00C5001D    0000               add     byte ptr [eax], al
00C5001F    0000               add     byte ptr [eax], al                      ; 0c500c0得手工填上,0c500c0+4处也得填上(存放那些下一句被抽的API的CALL)
00C50021    BF C000C500        mov     edi, 0C500C0                            ; EDI存放的是指向需要处理的API地址表
00C50026    8B07               mov     eax, dword ptr [edi]
00C50028    8B18               mov     ebx, dword ptr [eax]
00C5002A    81FB FFFFFF7F      cmp     ebx, 7FFFFFFF
00C50030    79 49              jns     short 00C5007B                          ; 高位是1的走这条路线(跳),即处理a方式
00C50032    837D D4 FF         cmp     dword ptr [ebp-2C], -1                  ; 如是FFFFFFFF,说明这个导入函数调用是干净的
00C50036    74 0F              je      short 00C50047

就这一行  00C50030    79 49              jns     short 00C5007B                          ; 高位是1的走这条路线(跳),即处理a方式,我的情况应该属于A种类型,但在这里却没有跳转,如果把Jns改为Jmp,强行跳转的话可以修复几个函数,但碰到有的函数就出错了,不知这是啥原因,哪位大大侠指点下!
2006-9-17 07:40
0
雪    币: 50161
活跃值: (20665)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
85
最初由 WANGZHE 发布
出的问题,只要返回的值是0,则可以正确获取,如果返回的值是1,则获取的地址前面就加上了8


这个8有用意的:
如果是1,当前这个call 01200000处运行时,会重新回到调用地址,再进入导入函数
如果是0,当前这个call 01200000进入导入函数后出来,不过这种方式比较邪恶,它可能做更多的事情

“//将EAX的返回值0或1置高位”,这个8是一标志,后面的补丁会处理的。

最初由 WANGZHE 发布
但碰到有的函数就出错了,不知这是啥原因,哪位大大侠指点下!


有些API函数是会出错的,但很少,出现这个情况,你单步跟踪,得到函数名后,在函数里下断点,中断后,直接将EIP指向函数尾部(即跳过这个函数,不让执行函数体)

最初由 kanxue 发布
00AA6D6D - E9 8E927900 jmp 01240000 //跳到patch代码执行
00AA6D72 90 nop
00AA6D73 0F85 3D010000 jnz 00AA6EB6
00AA6D79 3C 01 cmp al, 1

在分配的空间里键入如下补丁代码:

01240000 FFD2 call edx //壳原来的代码

这个版本Aspr在这校验了,如果你在这会出错,就得改进一下,call    edx这句不能移到分配的空间里,另外,也不要用jmp     01240000 跳到补丁代码里,可以用OD脚本:
mov eip, 01240000
mov eip, 01240000

……
2006-9-17 09:53
0
雪    币: 284
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
86
最初由 kanxue 发布
这个8有用意的:

“//将EAX的返回值0或1置高位”,这个8是一标志,后面的补丁会处理的。


........

谢谢看雪大哥这么快的回复,这个意思是说这个8不用管他,在后面的补丁会自动识别吗?我在第一个补丁在CALL EBX的下一行改的JMP,没有出现错误,这样改是不是也可以。这个程序总共有一百多个函数需要修复,不知是哪几个函数会出错,要一个个的跟吗?
2006-9-17 13:14
0
雪    币: 284
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
又跟踪了一上午,还是没有结果,共有198个函数需要修复,前一百个没有问题,但到了一百个以后就出问题了,每个函数必须单步跟进比如到了CALL 01CA0000的地方,必须先F7跟进,否则就会出错,用脚本也不成,这个软件A类型和B类型都有,并且并且每种类型中JMP和CALL两种形式也都有,是不是2.2的形式不适用于2.3的,请高手指点下!!!!!!!!!!!!!!软件下载地址http://www.s115.com/down/r2.rar
2006-9-17 22:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
88
太厉害啦,能做成动画就好啦,干看着很费劲的,头都大了...好东西...要花些时间看...
2006-9-18 18:29
0
雪    币: 284
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
89
成功解决问题,爽!!!!!!!!!!!!!
2006-9-19 21:23
0
雪    币: 235
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
90
还是直接补区段算了!
2007-2-28 23:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
91
这个我会了 +完可以达到免杀效果............
2007-3-1 12:58
0
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
92
晕倒再晕倒,顶一下
2007-4-4 14:19
0
游客
登录 | 注册 方可回帖
返回
//