吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1715|回复: 6
收起左侧

[新手问题] x64dbg断点遇到CALL的返回值RAX是日期,该怎么改?

[复制链接]
你不会了解 发表于 2021-11-17 12:45

Navicat 15 for MySQL

Navicat 15 for MySQL

软件是 Navicat 15,官网下载的最新试用版

逆向到这里,遇到一个函数需要返回过期时间,如上图,1969/12/31

看起来像是时间戳的起始值,毕竟1970/1/1 和 1969/12/31基本没区别

1但我想知道x64dbg是怎么计算出这个时间的?

从寄存器里所指向内存地址的数据来看,如果取前四个字节,则是 00 99 D2 0B

这四个字节,无论正反向转换成十进制,都和 1969/12/31 的时间戳不同

最最关键的是,这个值每次重新加载都不一样,还是那句话,这个时间x64dbg是怎么计算出来的

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

FSA4565 发表于 2021-11-17 13:48
内存地址是内存地址,不一样是正常的,需要转到这个内存地址去看数据。其次不是x64dbg怎么计算这个数值的,他不会给你计算,这个是个字符串,已经从时间戳变成了字符串,并不是调试器给你计算的
NoPower 发表于 2021-11-17 14:29
 楼主| 你不会了解 发表于 2021-11-17 14:32
本帖最后由 你不会了解 于 2021-11-17 14:39 编辑
FSA4565 发表于 2021-11-17 13:48
内存地址是内存地址,不一样是正常的,需要转到这个内存地址去看数据。其次不是x64dbg怎么计算这个数值的, ...


已知汇编代码如下:
[Asm] 纯文本查看 复制代码
call navicat.442500
mov  rax, rbx

此时RBX寄存器:内存地址1
内存地址1的值   =>  内存地址2
内存地址2的值   =>  31 00 39 00 36 00 39 00 2F 00 31 00 32 00 2F 00 33 00 31 00

将内存地址2的值,通过Unicode编码转换后,变成了 1969/12/31

也就是说,上面汇编代码,函数返回值rax将取得rbx所指向的数据

现在我的想法是,将 mov rax, rbx 改掉,比如改成  mov rax, 2969/12/31

但是这里的2969/12/31该怎么填,如果按照内存地址2的格式填,那么就是 32 00 39 00 36 00 39 00 2F 00 31 00 32 00 2F 00 33 00 31 00

其中我将31改成了32,表示1969年份改成2969,最终应该是  mov rax, 0x32003900360039002F00310032002F0033003100

但这么改好像不行,求指点。
头像被屏蔽
po1718 发表于 2021-11-17 16:12
提示: 作者被禁止或删除 内容自动屏蔽
lies2014 发表于 2021-11-17 17:06
rax要的是指针,所有调用rax的地方都会按指针来处理,你非要给个固定值,肯定不能得到想要的结果啊,把这个固定值写到某个地址,再把这个地址的指针赋给rax才是正确的做法,否则你就找到最终使用这个固定值的地方再看看怎么修改
冥界3大法王 发表于 2021-11-20 22:21
细节看不懂时,我就用自创的区间定位法,搞你起源的地方影响下边的走向。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 00:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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