能力值:
( LV2,RANK:10 )
|
-
-
76 楼
研究研究
|
能力值:
( LV2,RANK:10 )
|
-
-
77 楼
正在?此?,正好可供?考,著著版主!
|
能力值:
( LV2,RANK:10 )
|
-
-
78 楼
值得收藏的文章!
|
能力值:
( LV2,RANK:10 )
|
-
-
79 楼
看了又看
|
能力值:
( LV9,RANK:170 )
|
-
-
80 楼
花了几个小时间才读懂,并照做修复了一个程序。
谢谢!!
|
能力值:
( LV2,RANK:10 )
|
-
-
81 楼
好好,又可以学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
82 楼
00C5001F 0000 add byte ptr [eax], al ; 0c500c0得手工填上,0c500c0+4处也得填上(存放那些下一句被抽的API的CALL)
这一段看不明白,0c500c0处应该填上什么,0c500c0+4的地方又应该填什么?请高手指点一下吧?
|
能力值:
(RANK:350 )
|
-
-
83 楼
注释是指这句:
00C50021 mov edi, 0C500C0
0C500C0 你可以选一个空白地址,是一个变量,用以存放一个地址指针。
|
能力值:
( 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,强行跳转的话可以修复几个函数,但碰到有的函数就出错了,不知这是啥原因,哪位大大侠指点下!
|
能力值:
(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
……
|
能力值:
( LV2,RANK:10 )
|
-
-
86 楼
最初由 kanxue 发布 这个8有用意的: “//将EAX的返回值0或1置高位”,这个8是一标志,后面的补丁会处理的。
........
谢谢看雪大哥这么快的回复,这个意思是说这个8不用管他,在后面的补丁会自动识别吗?我在第一个补丁在CALL EBX的下一行改的JMP,没有出现错误,这样改是不是也可以。这个程序总共有一百多个函数需要修复,不知是哪几个函数会出错,要一个个的跟吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
87 楼
又跟踪了一上午,还是没有结果,共有198个函数需要修复,前一百个没有问题,但到了一百个以后就出问题了,每个函数必须单步跟进比如到了CALL 01CA0000的地方,必须先F7跟进,否则就会出错,用脚本也不成,这个软件A类型和B类型都有,并且并且每种类型中JMP和CALL两种形式也都有,是不是2.2的形式不适用于2.3的,请高手指点下!!!!!!!!!!!!!!软件下载地址http://www.s115.com/down/r2.rar
|
能力值:
( LV2,RANK:10 )
|
-
-
88 楼
太厉害啦,能做成动画就好啦,干看着很费劲的,头都大了...好东西...要花些时间看...
|
能力值:
( LV2,RANK:10 )
|
-
-
89 楼
成功解决问题,爽!!!!!!!!!!!!!
|
能力值:
( LV8,RANK:130 )
|
-
-
90 楼
还是直接补区段算了!
|
能力值:
( LV2,RANK:10 )
|
-
-
91 楼
这个我会了 +完可以达到免杀效果............
|
能力值:
( LV3,RANK:30 )
|
-
-
92 楼
晕倒再晕倒,顶一下
|
|
|