-
-
[原创][shellcode框架(三)] 修复shellcode框架的小bug
-
发表于:
2017-3-27 14:18
8435
-
[原创][shellcode框架(三)] 修复shellcode框架的小bug
在我使用这个shellcode框架的时候,发现了如下Bug
1.我们利用函数名hash获取函数地址时,按照我们的想法是获取一个地址这个地址就是函数的实现位置;
但有时候返回给我的地址确实这样的
如上图,返回地址其实指向字符串。如果我们不去解决这个问题,当我们去调用这些函数的时候,就会造成崩溃。
这个问题解决的办法:
1.规避这种问题,当使用某函数是,直接使用深层提供者(dll)中的函数。如上图的WSAStartup ,直接使用ws2_32.dll提供的WSAstartup。但这种办法也有问题,看下图
有些函数如上图,提供者是kernelbase.dll,而kernelbase.dll在xp上是不存在的。这就是这种办法的尴尬之处。
2. 递归调用去自动获取深层次的地址。
这种办法是当发现地址是字符串地址的时候,如MD5Init函数返回地址是NTDLL.MD5Init ,这里我们分别获取到dll名和函数名,去loadlibrary NTDLL,将函数名MD5Init计算为hash再次去调用利用hash获取函数地址的函数。最终会获取真正的函数实现地址。
由于编辑器显示问题,代码会乱,放附件了
这样我们就可以准确获取所需的函数地址了。
调用的时候别忘记把LoadLibarary地址一早获取,并每次都传入。
附上小工具。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)