在 010073B2
地址处调用了 GetModuleHandleA
API,获取 notepad.exe
程序的 ImageBase
。然后在 010073B4
与 010073C0
地址处比较MZ与PE签名。希望各位熟记原 notepad.exe
的EP代码。
打开会提示被压缩了。不用管 继续打开即可
然后我们可以得到 UPX EP
代码
EP地址是 01015330
这里就是第二个节区的末端部分。实际压缩的 notepad
源代码存在于EP地址的上方
查看代码开始的地方
首先使用 PUSHAD
命令把所有通用寄存器 EAX-EDI
寄存器的值保存到栈,然后分别把第二个节区的起始地址 0x1011000
与第一个节区的起始地址(0x1001000)设置到ESI EDI寄存器。UPX文件的第一个节区仅存在于内存。该处即是解压缩后保存源文件代码的地方
调试时像这样同时设置ESI与EDI,就能预见从ESI所指缓冲区到EDI所指缓冲区的内存发生了复制。此时从Source(ESI)读取数据,解压缩后保存到Destination(EDI)。我们的目标是跟踪上图中的全部UPXEP代码,并最终找到原notepad的EP代码