Archive for the ‘Windows’ Category

aliedit

最近有需要研究下支付宝的密码控件,即aliedit。谷歌百度之,发现还有驱动级别的(::>_<::)。自己动手,丰衣足食。
先看下支付宝的登录源码,其中有这样一段:alipay

OK,载体是一个ActiveX控件。不用浏览器安装这个ActiveX控件,直接从官网上下载aliedit.exe。
使用Universal Extractor将安装包解包,发现其中只有dll,看来并没有网上所说的驱动了(后面使用工具反复找也没找到驱动模块的痕迹)。
在Ring3的aliedit是如何处理键盘消息并防止被hook键盘消息的呢?
使用spy++捕捉支付宝页面的键盘消息,发现就只有aliedit控件处的键盘消息是无法捕捉到的,怀疑也是hook。
于是用工具找找hooks看,出于意料的是QQ管家、spy++等的hooks都被检查出来了,aliedit却没有(囧rz),只能看看其内部实现了。

直接用IDA打开发现IDA报警告,分析出的代码含UPX节,可能是加壳了。PEiD查壳果然,用UPX脱之,不费力。
在IDA的Imports中果然找到了SetWindowsHookEx和UnhookWindowsHookEx的引用,主要就是分析引用它们的例程了,分别是offset 0x936D和offset 0x93BC。

.text:100093A1 push 0 ; dwThreadId
.text:100093A3 push eax ; hmod
.text:100093A4 push offset fn ; lpfn
.text:100093A9 push 0Dh ; idHook
.text:100093AB call ds:SetWindowsHookExA

是一个全局的低级键盘钩子,奇怪的是我用工具没找到它的踪影——要么应该在工具中列出该钩子,要么在运行aliedit之后运行的进程中会有aliedit.dll模块。

IDA具体的分析如下:aliedit.idb(附件太大就不传了)

这里我只说说为什么会找不到aliedit的钩子。
先用OD附加打开了支付宝登录页面的IE,查看--->可执行模块中找到aliedit.dll的路径(C:\WINDOWS\system32\aliedit\2.5.0.3\aliedit.dll),用脱壳后的文件替换,然后再如上附加。
查看--->可执行模块中找到aliedit.dll的基址(07780000),查看--->内存中找到aliedit.dll的基址处,在代码节下断,然后运行。程序很快就会在aliedit.dll的领空断下来。
在0778936D(引用SetWindowsHookEx的例程)和077893BC(引用UnhookWindowsHookEx的例程)处下断,运行,总结:
aliedit控件获得焦点时会SetWindowsHookEx,反之,失去焦点时会UnhookWindowsHookEx。注意这里是aliedit控件,不是整个alipay的页面或IE。
这就解释了为什么用一般工具找不到它的hook了。

补充一个调用aliedit的测试页面:aliedit_test.html

.net反编译

Invalid number of data directories in NT header

Reflector Error:Module '…' contains zero or multiple module definitions.(没彻底明白怎么改,所以失败了,::>_<::)

XP Boot Sector1

XP.BS1即Windows XP启动分区中的第一个扇区,是继XP.MBR之后执行的代码。用老办法WinHex拷贝为新的二进制文件,debug -u反汇编之。分析了一段代码,坑爹的发现代码部分里面穿插了好多DB定义和奇怪的操作,然后就分析不下去了。我还以为是花指令或者为了填充到指定大小引起的呢。结果下午竟然用IDA折腾出来了。

IDA分析一段二进制的时候首先要确定这段二进制是代码,其次要选择好反汇编的CPU平台,最后需要在确定是代码的部分:右键--->分析指定区(不然你会看到全是DB定义,木有代码)。

先奉上我用debug -u分析的那段,虽然后面分析不下去,但前面能分析的部分大体是正确的。

XP.BS1

再奉上IDA分析过后的(需下载,并用IDA打开,就别直接点开看了)

XP.BS1(修正部分没在IDB里修正,sorry,看.txt吧)

最后方便没有IDA或想在线看IDA分析过后的(这个是从IDA文件中拷贝出来的,可以直接点开看)

XP.BS1.IDA(看后面的修正吧)

参考资料:活动分区的引导记录DBR分析加XP.MBR中的那些。

重要修正:怎么说呢,技术还很菜,难免疏漏。用bochs跟了遍,修正下.txt文档。

XP.BS1.IDA修正

MBR

MBR(Master Boot Record,主引导记录)位于硬盘的第一个扇区,注意,不是系统分区的第一个扇区。用WinHex打开,工具--->打开磁盘--->选择Physical Media中的硬盘,而不是逻辑分区中的系统分区,偏移0x000-0x1FF处。

MBR由主引导程序、DPT(Disk Partition Table,硬盘分区表)和硬盘有效标识(0x1FE-0x1FF处的0x55AA,一个硬盘有没有格式化好像就看它)三部分组成。其中主引导程序占446bytes(0x000-ox1BD),DPT占64bytes(0x1BE-0x1FD),硬盘有效标识2bytes(0x1FE-0x1FF)。

MBR不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写。

Win7中主引导程序的代码段为0x000-0x162,0x163-0x1BD是数据段。0x163-0x17A为“Invalid partition table\0”;0x17B-0x199为“Error loading operating system\0”;0x19A-0x1B2为“Missing operating system\0”。

MBR的百度百科(里面关于DPT的部分有误,请参考下面的链接)

Windows 7的MBR分析

硬盘逻辑结构简介(硬盘的一些基本概念)

如何将MBR反汇编

INT 13(BIOS的硬盘读写中断)

花了接近一天的时间,终于完成了XP.MBR的分析,先把分析结果发上来,资料再补充。

XP.MBR

重要修正:怎么说呢,技术还很菜,难免疏漏。用bochs跟了遍,修正下.txt文档。

Read more

FS

Ring0: FS--->KPCR

Ring3: FS--->TEB

kpcr、prcb、tss、fs、tr

无觅相关文章插件,快速提升流量