step1 writeup —— 输入作为函数参数
2015-05-02 18:55
267 查看
Hint[b]:[/b]
暂无HINT
题目描述:
Do you know SendMessage ?
Writeup:
在IDA字符串窗口中找到字符串“The password is:”,于是根据交叉参考找到了相关函数。
OD同时定位到该函数,单步调试,发现有两个SendMessageA函数,两个函数的参数形式相同,第一个Message为WM_GETTEXT,将获取到的name存入栈中。第二个Message未知,但由于两个SendMessageA函数的参数形式相同,猜测第二个Message同为WM_GETTEXT,且将获取的key存入栈中。
可以看到eax-200E4h为Message类型参数,WM_GETTEXT为0Dh,所以eax为200E4h+0Dh=131313D,eax为StrToIntA函数的返回值,因此输入的name应为“131313”。
后面有个GetProcAddress函数,该函数的第二个参数(库函数名称)为输入的key与程序中的一个固定字符串异或而得
返回值存入ebp+arg_8。在后面有个打印password的函数,但是在调用的时候并不是call
MessageBoxA,而是call [ebp+arg_8],因此猜测GetProcAddress函数获取的是MessageBoxA函数的地址,因此GetProcAddress函数的第二个参数为“MessageBoxA”,因而key
= MessageBoxA xor 固定字符串。
后面还有最终password的计算方法,但是到这里有了name和key就已经可以让程序自动弹出password了。
暂无HINT
题目描述:
Do you know SendMessage ?
Writeup:
在IDA字符串窗口中找到字符串“The password is:”,于是根据交叉参考找到了相关函数。
OD同时定位到该函数,单步调试,发现有两个SendMessageA函数,两个函数的参数形式相同,第一个Message为WM_GETTEXT,将获取到的name存入栈中。第二个Message未知,但由于两个SendMessageA函数的参数形式相同,猜测第二个Message同为WM_GETTEXT,且将获取的key存入栈中。
可以看到eax-200E4h为Message类型参数,WM_GETTEXT为0Dh,所以eax为200E4h+0Dh=131313D,eax为StrToIntA函数的返回值,因此输入的name应为“131313”。
后面有个GetProcAddress函数,该函数的第二个参数(库函数名称)为输入的key与程序中的一个固定字符串异或而得
返回值存入ebp+arg_8。在后面有个打印password的函数,但是在调用的时候并不是call
MessageBoxA,而是call [ebp+arg_8],因此猜测GetProcAddress函数获取的是MessageBoxA函数的地址,因此GetProcAddress函数的第二个参数为“MessageBoxA”,因而key
= MessageBoxA xor 固定字符串。
后面还有最终password的计算方法,但是到这里有了name和key就已经可以让程序自动弹出password了。
相关文章推荐
- swift-函数04-函数作为参数,返回值,输入输出参数
- 输入a和b两个整数,按先大后小的顺序输出a和b(指针变量作为函数参数)
- 如何将一个函数作为另一个函数的输入参数
- python中的含有 *args 和**kwargs的用法 作为参数的函数,参数输入问题
- 输入10个数,求出最大元素是第几个数(数组作为函数参数)
- C语言技巧【枚举作为函数变量类型】【数据输入与输出】【do while循环体内scanf函数被跳过,循环结束】【用const修饰函数的参数】
- 指针变量作为函数参数实现对输入的两个整数按大小顺序输出
- 指针的学习(3)指针作为函数的参数的输入和输出的参数的特性
- 数组名作为函数参数和数组元素作为函数参数有什么不同?‘\0’和“\0”的区别?
- 数组作为函数的参数
- 数组大小不能在函数内计算,而是应该作为参数传进来
- ul模拟select,位置,数据,是否可输入及输入提示效果都可作为参数直接传入
- MATLAB函数的输入参数传递方式探秘
- 结构体类型数据作为函数参数(三种方法)
- 指针作为函数参数
- javascript中函数作为参数调用的方法
- C# 引用类型作为函数参数时一些需要注意的地方
- 080.Function Pointer Arg 函数指针作为函数参数
- 学习笔记---指针法访问数组、数组的实质、数组/指针作为函数参数
- 数组作为函数的参数和返回值