fly的upx dll 脱壳部分文章:
=================================================================
代码:
-----------------------------------------------------------------
003B825E 8A07 mov al,byte ptr ds:[edi]
//EDI=003B7318-当前基址003B0000=00007318 ★ 这就是重定位表的RVA
003B8260 47 inc edi
003B8261 09C0 or eax,eax
003B8263 74 22 je short EdrLib.003B8287
//重定位数据处理完毕则跳转
003B8265 3C EF cmp al,0EF
003B8267 77 11 ja short EdrLib.003B827A
003B8269 01C3 add ebx,eax
003B826B 8B03 mov eax,dword ptr ds:[ebx]
003B826D 86C4 xchg ah,al//找到这里
003B826F C1C0 10 rol eax,10
003B8272 86C4 xchg ah,al
003B8274 01F0 add eax,esi
003B8276 8903 mov dword ptr ds:[ebx],eax
003B8278 EB E2 jmp short EdrLib.003B825C
003B827A 24 0F and al,0F
003B827C C1E0 10 shl eax,10
003B827F 66:8B07 mov ax,word ptr ds:[edi]
003B8282 83C7 02 add edi,2
003B8285 EB E2 jmp short EdrLib.003B8269
003B8287 61 popad
//此时EDI=003B74EA ★
003B8288 E9 3C8FFFFF jmp EdrLib.003B11C9
//飞向光明之点巅!
------------------------------------------------------------------
在003B8287处下断,F9运行,断下,重定位数据处理完毕
当我们在003B8287处中断下来时,EDI=003B74EA,就是重定位表结束的地址
==================================================================
偶不同意其中的说法,fly不要介意,不是说UPX破坏了重定位表。7318应该是upx壳为加壳程序重定位的加密表的RVA,而edi=3b74ea时是加密表结束地址,要得到还原PE装载器可用的重定位表,就需要自己写代码处理或像fly用UPXAngela.exe。这里还是要感谢fly放出教程^o^。
正在写一个RAT破坏修复脚本……:p
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法