我写了一个简单的注册程序,需要一个名称和许可证密钥才能获得成功消息。编码解决方案只是希望两个字段区分大小写,名称字段必须为Admin
,许可证密钥必须为TopSecret
,两个字段必须匹配才能成功。
这当然没有什么复杂的,永远不会在现实世界的应用程序中使用,但由于我几乎是装配和逆向工程的初学者,所以我希望能够很好地为我服务,因为我对内部运作方式有了更多的了解。装配工程。
我的最终目标是反汇编我自己的注册方案,并确定可能尝试打破它的“外人”有多容易,并且随着我变得更好,我希望让我的应用程序更强大,以防止此类攻击
在OllyDbg中,当设置断点并使用F8踩到时,我可以从内存堆栈中查看字符串,如下面屏幕右下方所示:
正如您在绿色中突出显示的那样,我在“名称”字段中输入了SOME NAME
,在“许可证密钥”字段中输入了123456789
,OllyDbg已设法显示我认为是内存堆栈。
是否可以在IDA中执行此操作,如果是这样,怎么办?我尝试打开尽可能多的子视图和调试子视图,但我看不到一种方法可以逐步查看内存中的字符串。 IDA中是否有内存堆栈窗口,就像在OllyDbg中一样?
答案 0 :(得分:3)
进行静态分析时,IDA更有用。在动态分析和动态调试方面,IDA可能不是我最喜欢的工具。
要在IDA中查看用户名/密码,只需按SHIFT + F12或转到查看 - >打开子视图 - >字符串。
你应该看到字符串。
如果要在动态分析中执行此操作,请将断点放在与Ollydbg中完全相同的位置,然后查看堆栈视图。