ie12580 发表于 2024-6-12 02:02:58

本帖最后由 ie12580 于 2024-10-18 17:57 编辑

lies2014 发表于 2024-6-11 23:39
要注意三点:
1、我使用的是条件断点,你还要进去看一下条件是怎么设置的
2、截图里调试器是断在系统函 ...
表哥你真的是太热心了,下午我一直自己慢慢试,试到现在,总算是搞定了,当然这一切多亏有你之前提供的补丁配置文件。


明天我下载你的完整补丁数据看看你是怎么设置的,我到刚刚才找出来为什么没有补丁上的原因,第一个标题处用偏移需要用到[ ]号,否则偏移地址会不对,第二个解锁处是不能用[ ]号的,否则也会导致偏移地址不对。
最初我以为大白ESP地址偏移是从双击选中ESP那一行开始计算的,但经过对补丁数据的多次验证对比,发现是需要选中ESP下面第一行双击后开始计算偏移。

那个不用HOOK API正好昨天看了校长的教学视频,说是有四个硬件断点,下午也特意试了下,确实可以不用勾选“补丁数据解码后判定”依然有效。
你说的 ‘一个是指针一个是数值’ 这个我还不太明白,回头我去学习一下这方面的教程,目前还很新手,对于你的热心帮助,真的除了说感谢,我都不知道该说啥了,你真的太好了。

最后我做了点总结,但只是个人猜想的,不知道正确与否。
-------------------------------分割线-------------------------------
命令行查看偏移

DUMP ESP+8---等于选中ESP+8地址后,鼠标右键选择 在内存窗口中转到 的效果;
DUMP ---等于选中ESP+8地址后,鼠标右键选择 在当前内存窗口中转到指定DWORD(F) 的效果;

大白补丁寄存器偏移设置说明
1. 如ESP寄存器,需双击选中ESP下面第一行地址后,开始计算偏移;
2. 堆栈窗口中使用 在当前内存窗口中转到指定DWORD(F) 查看到的数据,设置偏移地址时需要用[ ]号;
3. 堆栈窗口中使用 在内存窗口中转到 查看到的数据,设置偏移地址时不能用[ ]号;

-------------------------------分割线-------------------------------

再次感谢 lies2014 表哥{:handshake:}{:handshake:}{:handshake:}

lies2014 发表于 2024-6-12 08:22:21

本帖最后由 lies2014 于 2024-6-12 08:41 编辑

ie12580 发表于 2024-6-12 02:02
表哥你真的是太热心了,下午我一直自己慢慢试,试到现在,总算是搞定了,当然这一切多亏有你之前提供的补 ...
最终结果是对的,但你在一些概念上还没有完全理解,以后换个场景可能还会混淆

首先,大白与调试器看到的应该是一样的,另一种意义上实际就是你在调试器动作的复现
那为什么这里会不同呢,因为你调试器中断的地址和大白不一致
大白里设置的是0x408423,属于用户空间,也就是你能在pdf.exe这个程序里能找到的代码
调试器你是中断在CreateWindowExA函数里面,也就是系统空间,这是Windows系统的DLL
用户空间的代码通过call调用了系统空间的函数,call外面和call里面的堆栈是不一样的
进入call执行完毕后还是要返回用户代码继续执行的,因此会把要返回的用户地址压入栈空间
你只要在0x408423下个断,看一下现在的堆栈,再F7进入call,就可以看到变化了
在大白里设置的存储器就应该是你在0x408423看到的,而不是F7后看到的

这是运行到0x408423的参数位置:


下面是F7后的参数位置:


然后就是指针和数据的问题,MSDN里对CreateWindowExA函数的参数定义是这样的:
HWND CreateWindowExA(
         DWORD   dwExStyle,
LPCSTR    lpClassName,
LPCSTR    lpWindowName,
         DWORD   dwStyle,
         int       X,
         int       Y,
         int       nWidth,
         int       nHeight,
HWND      hWndParent,
HMENU   hMenu,
HINSTANCE hInstance,
LPVOID    lpParam
);
第3个参数LPCSTR就是指针类型,第4个参数DWORD是双字的数据
比如你要找一个人,指针就好像是一个门牌号,你要先找到这个门牌号才能找到人
所以你要对这个人干什么都是间接的,要通过 [门牌号] 来做出动作
而数据里面就是这个人,因此对他的动作就是直接上,不需要 [] 来转换


ie12580 发表于 2024-6-12 11:32:47

lies2014 发表于 2024-6-12 08:22
最终结果是对的,但你在一些概念上还没有完全理解,以后换个场景可能还会混淆

首先,大白与调试器看到 ...


表哥表述的真的很简单易懂,又是找对比,又是举例子,一会我把这些全用文档整理记录好收藏,以后万一搞混时又可以随时重新学习。
晚点我整理一下学习笔记后,上调试器中好好理解一下你说的这个指针和数据。

今早起来,电脑又开不了机,到刚才才误打误撞弄好,暂时还不知道具体哪里问题引起的。
早两天还拔一下主板供电就能开机,今天怎么拔拆都没用,我以为今天上不了电脑,后来又不知道怎么滴,它又神奇般的好了可以开机了。
所以第一时间登QQ,上论坛;像你这么好的表哥,说真的,我感觉回信息回晚了都是对你的不尊重。
早上就用手机QQ看了下链接,看你有回复,想马上回复你来着,结果手机QQ上好像不太好操作(也可能是我不熟悉,之前没用手机上过帖子)。

ie12580 发表于 2024-6-12 21:00:01

lies2014 发表于 2024-6-12 08:22
最终结果是对的,但你在一些概念上还没有完全理解,以后换个场景可能还会混淆

首先,大白与调试器看到 ...

下午学习了一下午,又实践操作了些,现在对CALL外CALL内的理解更深了。
记住了你说的由于压了一层返回地址,所以CALL内的偏移和CALL外是不一样的。

而且CALL内调用的系统DLL,所以要以CALL外软件内的地址为基准,调式器中如此大白中也是如此。
对指针和数据也有了初步认识,后续一遇到就会想起你教的门牌号和本人的关系。

赞赞赞{:handshake:}{:handshake:}{:handshake:}
感谢!!

pizazzboy 发表于 2024-6-16 08:59:24

先学习,再点赞。

ie12580 发表于 2024-6-16 15:12:57

pizazzboy 发表于 2024-6-16 08:59
先学习,再点赞。

好好学习,学完记得向热心表哥lies2014点赞!

教得超级详细,新手都能听懂。

pizazzboy 发表于 2024-6-16 18:45:41

lies2014 发表于 2024-6-11 00:40
第一个问题沙发的同志已经讲了,你得研究一下大白的说明书
第二个问题,同样 CreateWindowExA 下断点,参 ...

请问一下大佬,第四个参数为啥要改成这个才能输入,其原理是什么?看了CreateWindowEx函数,没有找到这个参数值。

lies2014 发表于 2024-6-16 22:29:04

本帖最后由 lies2014 于 2024-6-17 02:26 编辑

pizazzboy 发表于 2024-6-16 18:45
请问一下大佬,第四个参数为啥要改成这个才能输入,其原理是什么?看了CreateWindowEx函数,没有找到这个 ...
不知道你看的是什么资料,微软的官方文档讲得很清楚了:
https://learn.microsoft.com/zh-c ... ser-createwindowexa
https://learn.microsoft.com/zh-cn/windows/desktop/winmsg/window-styles
https://learn.microsoft.com/zh-c ... edit-control-styles


pizazzboy 发表于 2024-6-17 07:51:52

lies2014 发表于 2024-6-16 22:29
不知道你看的是什么资料,微软的官方文档讲得很清楚了:
https://learn.microsoft.com/zh-c ... ser-cre ...

感谢指点,非常详细。{:handshake:}

哥又回来了 发表于 2024-10-18 10:12:01

@ie12580
补充一下个人拙见:
我觉得你每次测试数据
A.最好在调试器里时不断的打印日志(log 命令)            显示出【内容】与预期是否相同?
B.在外部(大白中时) 不断的利用大白的(注册机功能) 显示出【内容】与预期是否相同?

减少数据失误几率,这样后面的失败可能性才能降低。
页: 1 [2] 3
查看完整版本: 被锁定的输入框及标题