能力值:
(RANK:350 )
|
-
-
2 楼
肯定是你重定位表没修对,关键是UPX这层,你尽量用“upx -d 文件名”来脱(注意UPX版本)
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
完全参照fly的《用Ollydbg手脱UPX加壳的DLL》 重定位的确定 是通过edi的变化值 确定后用winhex拷贝出来,然后用upxangle处理的,这样的操作已经很多次了(50<n) 生成的代码考会文件,空白区也检查过,没有覆盖任何代码(我一般放在UPX1段的后面) 然后修改重定位 rva 我脱壳的文件VOffset 和 ROffset是相同的,是不是我之前的操作就有问题。
|
能力值:
(RANK:350 )
|
-
-
4 楼
最初由 bney 发布 然后用upxangle处理的,这样的操作已经很多
很不幸,upxangle不完善,文件大些,也许修复的数据有问题的。
你还是想办法用UPX自身来脱。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
老大 我该怎么处理呢 我用relox也没法修复,刚脱第一层aspack壳出来的dll,没法load 2份到dll_loadEx 对于relox修复重定位 还是一知半解。
bs:我的文件是很大,有15M
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我用dreamtheater的upx ShellEx修复了一个dll,现在2个dll都能用了, 但是需要先启动upx shellex修复的dll,让它占用默认的基址,另外一个我手脱的dll 才会实现重定位 自动使用不同的基址。
由于其中一个文件很大,upx shellEx也无法修复, 我不是想破解什么,几个月来,原先的目的已经改变, 目前我只想知道为什么会这样,怎样控制它的运行。 去年也是做到这里停下了,幸好有了upx shellEx 但是他在处理某些变形壳,文件比较大时也不理想,但这个确实是我用到现在最好的upx脱壳工具。
大文件的upx变形壳 该怎么处理呢 老大?
这里是我搞错了,一个dll是upx ShellEx脱的,还有一个是原版的。所以,才会出现以上现象。
事实上只要是被脱过的dll 无论是upx ShellEx脱的 还是我手工脱的,只能运行一个。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
花点时间把重定位表看明白
这跟UPX没啥关系
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
原理我明白,但是大文件的变形的upx壳该怎么处理?论坛上没见过类似的介绍,脱壳工具也无能为力,自己写一个upxangle?我目前还没这么大能耐。
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
我用dreamtheater的upx ShellEx修复了一个dll,现在2个dll都能用了, 但是需要先启动upx shellex修复的dll,让它占用默认的基址,另外一个我手脱的dll 才会实现重定位 自动使用不同的基址。
你用upx ShellEx的dll和你另一个手脱的dll基础是否一样,如果基础不一样,那可能没有发生重定位的事 [QUTOE]由于其中一个文件很大,upx shellEx也无法修复, 我不是想破解什么,几个月来,原先的目的已经改变, 目前我只想知道为什么会这样,怎样控制它的运行。
去年也是做到这里停下了,幸好有了upx shellEx 但是他在处理某些变形壳,文件比较大时也不理想,但这个确实是我用到现在最好的upx脱壳工具。
大文件的upx变形壳 该怎么处理呢 老大?[/QUOTE]
文件太大就手脱 确定你的重定位表是否修对了
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
最初由 bney 发布 原理我明白,但是大文件的变形的upx壳该怎么处理?论坛上没见过类似的介绍,脱壳工具也无能为力,自己写一个upxangle?我目前还没这么大能耐。
大文件变形的upx 还是upx
小文件正常的upx 还是upx
大文件upx压的dll要修重定位表
小文件upx压的dll也要修重定位表
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
一般如果只是自己用的话, 并且这个dll确认不会被一个应用程序重复加载, 在壳处理重定位时,给它一个没人用的高地址就行了.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我处理重定位是用upxangela的 怎么在处理的时候使用高位地址 愿闻其详。
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
随便贴一个upx 的dll
007A6446 83C7 04 add edi,4
007A6449 8D5E FC lea ebx,dword ptr ds:[esi-4]
007A644C 31C0 xor eax,eax
007A644E 8A07 mov al,byte ptr ds:[edi]
007A6450 47 inc edi
007A6451 09C0 or eax,eax
007A6453 74 22 je short mchset.007A6477
007A6455 3C EF cmp al,0EF
007A6457 77 11 ja short mchset.007A646A
007A6459 01C3 add ebx,eax
007A645B 8B03 mov eax,dword ptr ds:[ebx]
007A645D 86C4 xchg ah,al
007A645F C1C0 10 rol eax,10
007A6462 86C4 xchg ah,al
007A6464 01F0 add eax,esi //重定位以当前基础
007A6466 8903 mov dword ptr ds:[ebx],eax
007A6468 ^ EB E2 jmp short mchset.007A644C
007A646A 24 0F and al,0F
007A646C C1E0 10 shl eax,10
007A646F 66:8B07 mov ax,word ptr ds:[edi]
007A6472 83C7 02 add edi,2
007A6475 ^ EB E2 jmp short mchset.007A6459
007A6477 61 popad
007A6478 - E9 27D7FEFF jmp mchset.00793BA4
这段就是upx自己对dll进行重定位, 把那个地方改到没人用的比如56780000
然后dump出来,基础改56780000就行了.确认没人和你抢那
|
能力值:
( LV4,RANK:50 )
|
-
-
14 楼
这里可以抓出所有需要重定位的地址
只是upx以自己的方式实现了
你了解重定位表的话,把这些地址修成标准PE格式的重定位表
这样修复重定位表绝不会错了
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
用 "dump partial" 然后输入重定位处理的起始地址(即在007A645B的edi的值)然后是size值(重定位处理完毕时的edi值减去重定位处理的起始地址) 然后我怎么做? 这段代码还是要处理的吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
顺便说一下 我用relox修复重定位, 两个dll比较差别老是为零 郁闷坏了。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
你用upx ShellEx的dll和你另一个手脱的dll基础是否一样,如果基础不一样,那可能没有发生重定位的事
用pe_load察看 两个dll的基址都是相同的。
运行upx ShellEx处理过的dll,再运行原版的dll,一切正常。
运行原版的dll,再运行upx ShellEx处理过的dll,只有我手脱的dll能正常工作,另外一个由于基址被占用,系统提示此组件没有安装。
bs:以上的2个dll是不同的两个组件,都被加了2层壳
|
能力值:
( LV7,RANK:100 )
|
-
-
18 楼
自己写工具修复重定位
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
|
|
|