-
-
[求助]关于一个gtalk脱壳的问题,求助高手
-
发表于: 2009-7-29 13:22 1702
-
本人小菜,因为公司对gtalk作了封杀,所以想做个免杀的gtalk.
先是发现gtalk用upx加的壳,用了一些脱壳的软件不行,就手工脱。
用ESP定律 :找到了oep入口。
0043857A . 8903 mov dword ptr [ebx], eax
0043857C . 83C3 04 add ebx, 4
0043857F .^ EB D8 jmp short 00438559
00438581 > FF96 20E30300 call dword ptr [esi+3E320]
00438587 > 61 popad
00438588 .- E9 4CADFCFF jmp 004032D9 <--oep入口
0043858D 00 db 00
0043858E 00 db 00
004032D9 > 81EC 7C010000 sub esp, 17C <--oep
004032DF 53 push ebx
004032E0 55 push ebp
004032E1 56 push esi
004032E2 33F6 xor esi, esi
004032E4 57 push edi
然后从此处dump下来后,用ImportREC载入调试中的程序,到入口点后,填上oep地址和RVA地址,大小,顺利找到很多IAT函数,用Fix dump 来选dump下来的文件。ok.
可是发现修复的 dump文件还是不能运行,用od载入,发现 ,函数命都是对的了,可问题是原程序在oep处的时候,堆栈中保存了一些数据,好像version.dll什么函数的地址,然后oep开始时的
81EC 7C010000 sub esp, 17C 指令会往上跳到那上面,然后把函数地址改变压栈什么的,而我的dump文件中的堆栈,一开始那些地方要么是杂乱数据要么是空的,所以跳过去就不匹配,最后出错说安装文件不完全....
我想请问,这类问题是怎么解决阿,是我没有dump完全吗?堆栈的也要dump下来,还是这程序比较特别的处理,应该如何解决阿,谢谢拉.....
先是发现gtalk用upx加的壳,用了一些脱壳的软件不行,就手工脱。
用ESP定律 :找到了oep入口。
0043857A . 8903 mov dword ptr [ebx], eax
0043857C . 83C3 04 add ebx, 4
0043857F .^ EB D8 jmp short 00438559
00438581 > FF96 20E30300 call dword ptr [esi+3E320]
00438587 > 61 popad
00438588 .- E9 4CADFCFF jmp 004032D9 <--oep入口
0043858D 00 db 00
0043858E 00 db 00
004032D9 > 81EC 7C010000 sub esp, 17C <--oep
004032DF 53 push ebx
004032E0 55 push ebp
004032E1 56 push esi
004032E2 33F6 xor esi, esi
004032E4 57 push edi
然后从此处dump下来后,用ImportREC载入调试中的程序,到入口点后,填上oep地址和RVA地址,大小,顺利找到很多IAT函数,用Fix dump 来选dump下来的文件。ok.
可是发现修复的 dump文件还是不能运行,用od载入,发现 ,函数命都是对的了,可问题是原程序在oep处的时候,堆栈中保存了一些数据,好像version.dll什么函数的地址,然后oep开始时的
81EC 7C010000 sub esp, 17C 指令会往上跳到那上面,然后把函数地址改变压栈什么的,而我的dump文件中的堆栈,一开始那些地方要么是杂乱数据要么是空的,所以跳过去就不匹配,最后出错说安装文件不完全....
我想请问,这类问题是怎么解决阿,是我没有dump完全吗?堆栈的也要dump下来,还是这程序比较特别的处理,应该如何解决阿,谢谢拉.....
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: