本文为看雪论坛优秀文章
看雪论坛作者ID:自然dashen
案例代码
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream.h>
struct tagNode
{
char szName[8];
struct tagNode *pNext;
};
struct tagTest
{
short Magic;
short nLength;
char *szBuf;
};
void test(char *szPwd)
{
tagNode *pHead = NULL;
tagNode *pNode = NULL;
FILE *fp = NULL;
fp = fopen("name.txt", "r+");
if (fp == NULL)
{
exit(-1);
}
int nRet = EOF;
for (int i = 0; i < 3; i++)
{
pNode = new struct tagNode;
nRet = fscanf(fp, "%s", pNode->szName);
pNode->pNext = pHead;
pHead = pNode;
}
for (pNode = pHead; pNode != NULL; pNode = pNode->pNext)
{
printf("%s\r\n", pNode->szName);
}
pNode = pHead;
fscanf(fp, "%s", pNode->szName);
pNode = pHead->pNext;
fscanf(fp, "%s", pNode->szName);
for (pNode = pHead; pNode != NULL; pNode = pNode->pNext)
{
printf("%s\r\n", pNode->szName);
}
if (fp)
{
fclose(fp);
fp = NULL;
}
}
int main(int argc, char* argv[])
{
char szPwd[] = "Hello";
test(szPwd);
system("pause");
return 0;
}
先观察代码
for (int i = 0; i < 3; i++)
{
pNode = new struct tagNode;
nRet = fscanf(fp, "%s", pNode->szName);
pNode->pNext = pHead;
pHead = pNode;
}
for (pNode = pHead; pNode != NULL; pNode = pNode->pNext)
{
printf("%s\r\n", pNode->szName);
}
pNode = pHead;
fscanf(fp, "%s", pNode->szName);
pNode = pHead->pNext;
fscanf(fp, "%s", pNode->szName);
for (pNode = pHead; pNode != NULL; pNode = pNode->pNext)
{
printf("%s\r\n", pNode->szName);
}
if (fp)
{
fclose(fp);
fp = NULL;
}
进入printf函数查看间接调用的API
00430250 >76C83ED3 kernel32.ReadFile
编写读入的数据
寻找com漏洞工具
使用工具挖掘
寻找COM组件的位置
看雪ID:自然dashen
https://bbs.pediy.com/user-710414.htm
推荐文章++++
* 某盗链App逆向
好书推荐