吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 680|回复: 5
收起左侧

[新手问题] x64dbg中内存窗口的疑问

[复制链接]
richard_ljd 发表于 2024-4-21 09:26
起因是在看逆向教程时,老师提到了:有些时候在提示窗口的字符串旁边就是密码。我根据这个说法想要进行一个尝试,
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
	int Key = 0;
	printf("输入密码:");
	scanf("%d",&Key);

	if(Key == 123456)
		puts("Ture");
	else
		puts("Flase");
	
	system("pause");
	return 0;
}


这是小程序的代码,经过编译后运行无误之后用dbg打开,用户模块搜索字符串
字符串查找.png
这一步很轻松的就找到了,只是一个普通的程序,随后我转到内存窗口
内存窗口.png
内存窗口中没有找到字符串,我不太明白这是什么原因所以想要请问一下()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

爱飞的猫 发表于 2024-4-21 17:38
因为你使用整型(int)来对比密码,而不是字符串。

通常进行字符串对比的时候,堆栈可以看到函数的变量值。因此出现错误弹窗的时候,如果没有清理该变量,就能看到。

64 位的程序又有点不同,因为寄存器多,可能会将变量存储到某个寄存器中。不过看你截图你编译的还是 32 位程序,和这个应该关系不大。
 楼主| richard_ljd 发表于 2024-4-22 10:52
爱飞的猫 发表于 2024-4-21 17:38
因为你使用整型(int)来对比密码,而不是字符串。

通常进行字符串对比的时候,堆栈可以看到函数的变量 ...

感谢,不过似乎这个程序还是一个64位程序,至少默认打开的是x64dbg,我阅读了你的回复后了解到了因为我是使用int类型进行判断,所以导致引发的疑惑,随后我对代码进行了更改
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char const *argv[])
{
	char str[24];
	char key[] = "123456";
	char t[] = "Ture";
	char f[] = "Flase";

	printf("Key");
	scanf("%s",&str);

	if(!strcmp(str,key))
			printf("%s\n",t );
	else
		printf("%s\n",f );

	system("pause");
	return 0;
}



编译成功以后我对这个程序进行了调试
(如果你说为什么我把Flase和Ture都写成变量的话,主要是第一次我没有意识到我输入的密码
也会写入。所以添加了这两个变量在printf调用之前读取的时候我能够找到位置)

搜索->所有用户模块->跨模块调用
我搜索printf的调用找到了判断点,然后下断点(如图)
断点.png

随后向后跟进了几步,printf调用前读取了f字符串,我对f字符串转到内存窗口看到了
内存窗口内容.png
后续就是我设置的密码和t字符串的内容,我也发现了我输入的字符串12345在这个的后面,第二次修改我将ture和flase设为常量,
在判断点前暂停,在栈窗口中我发现了我输入的内容,
栈窗口.png
随后就是转到内存窗口,也看到了位于我输入字符串前设置的密码。

但是还有一个问题能问一下么?

在我使用ce的时候,一般对一个变量打开内存布局首位都是这个变量。但是在使用x64dbg时转到内存窗口开头并不是我选中的内容(就像上面内存窗口,
我是点击Flase转到内存窗口的,但是实际上Flase的内容在内存窗口的中间。对于这里我有一点疑惑。

点评

因为 x64dbg 的内存视图(memory dump)的地址是对齐到 0x10。ce 的这个地方可以不对齐。 我不清楚有没有选项可以改变这一行为。  详情 回复 发表于 2024-4-22 17:41
sbwfnhn 发表于 2024-4-22 16:24
 楼主| richard_ljd 发表于 2024-4-22 17:22
sbwfnhn 发表于 2024-4-22 16:24
char t[] = "Ture";

ture ??? 不是true?????

az,记错了
爱飞的猫 发表于 2024-4-22 17:41
richard_ljd 发表于 2024-4-22 10:52
感谢,不过似乎这个程序还是一个64位程序,至少默认打开的是x64dbg,我阅读了你的回复后了解到了因为我是 ...

因为 x64dbg 的内存视图(memory dump)的地址是对齐到 0x10。ce 的这个地方可以不对齐。

我不清楚有没有选项可以改变这一行为。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
richard_ljd + 1 + 1 感谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 22:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表