对于OD调试下API断点的疑惑
今天在做一个非常简单的crackme,序列号是明文存储的,非常容易看,关键的判别函数就在这里然而我之后做了一些东西,感觉非常奇怪,希望有大佬能够帮我看一下这个问题。整个程序就是先通过GetwindowTextA函数获取输入的字符串,然后调用Istrcmp函数进行判断即可,而且整个程序调用这两个API函数的地方只有一个,我在GetwindowTextA和Istrcmp函数的第一行分别下断(系统领空内),之后我直接执行,发现居然没有断到GetwindowTextA内,而是断到了Istrcmp内,并且堆栈的内容也很奇怪,为什么程序没有先提取我的字符串?而是先断到了Istrcmp函数里?这是什么原因呢???希望有人能给我讲一下这是为什么? 手机打字太辛苦,但是我还是愿意回复你。使用GetWindowsText断不下的原因有很多:一是程序里面有很多模块都使用了这个函数,而你下段断的函数只是其中一个模块儿的,并而不是你要断下的那个模块。二个原因就是断点断不下,很可能就是由于其中某个插件的原因导致断不下来,换个od或用x64dbg就行。,三是清理OD分析记录,四是获取文本框内容可能没有使用这个函数。比如可以用GetDlgItemText或消息方式…
总之原因太多了,你试着一个一个排查吧。希望对你有点帮助。 无闻无问 发表于 2020-2-23 08:48
手机打字太辛苦,但是我还是愿意回复你。使用GetWindowsText断不下的原因有很多:一是程序里面有很多模块都 ...
还有个小问题想问一下您,我ctrl+n查看调用的函数,是不是只能看本模块所调用的函数呢?比如我在程序领空这块ctrl+n查看调用函数,比如发现有GetwindowtextA这个函数,并且下一个输入断点(就是在call这个函数的位置下断),我发现只有一个地方被断了,是不是只能说明在当前这个模块里只有1处调用,其他模块也有可能对这个函数有调用? 本帖最后由 无闻无问 于 2020-2-23 12:13 编辑
Sezangle 发表于 2020-2-23 09:47
还有个小问题想问一下您,我ctrl+n查看调用的函数,是不是只能看本模块所调用的函数呢?比如我在程序领空 ...
这个不一定,有些地方代码假如需要特定的条件才会执行,并不说明它不调用…GetWindowsTextA/W这个函数很多控件都会用,按理说会不断断下,如果只有一处断,不太正常…你换个od,或用x64dbg,或者下硬件断点,试试,排除原因… 小萌新来偷学{:1_907:} wuaiFan 发表于 2020-2-23 20:46
小萌新来偷学
都是萌新hhhhhhhh
页:
[1]