欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

8.继续分析一破解加密码获取-最最最简单的注册机

发布时间:2025/6/17 编程问答 8 豆豆
生活随笔 收集整理的这篇文章主要介绍了 8.继续分析一破解加密码获取-最最最简单的注册机 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

先看程序:

 

大体上是输入密码吧。

先第一个思路,直接破解密码校验的地方。直接改汇编代码。

跟踪字符串快速缩小范围:Password Is Wrong

 

找到了,然后直接改:

 

OK破解成功:


现在换个思路,看看能不能直接把他的真实密码拿出来。

上面看字符串的时候看到一个诡异的字符串112233,可以先懵一把,没错就是懵一把。

OK密码不对。继续开始分析。

 

然后是用了一个窍门就是在输入的地方先输入东西,因为调试还没走到那,所以不会接受,然后一步一步调试,当过了某个call函数的时候,如果刚刚输入的字符串突然出现了,那么就先锁定这个字符串,一层一层卡位往里走(一开始从Pass...Yes往前倒着走,走着走着没思路了),然后分析结果是下面这样(分析都写在注释里了):


异或0x1的那个函数call asd.00811100是这个(分析都写在注释里了):

 

然后是上上个图的那个XXXXXXXX的位置,我觉得应该是做字符串比较呢,就是把输入字符串异或0x1之后和某个字符串比较。但是里面还没分析清楚,明天再说吧,今天来不及了。还有一个窍门就是知道是xor 0x1了之后我的所有输入字符串都是00000了。这样方便观察。最后偷了个懒。在查找Password。。。字符串的时候我看到了112233,那么可以猜测一把,输入串异或之后是和112233比较。所以直接112233异或1之后得到003322,然后测试一波:

 


然后C++实现了下代码,如下,大家可以自己编译之后分析学习

 

// NXY.cpp : 定义控制台应用程序的入口点。//MessageBox(NULL,L"HelloWorld",NULL,MB_OK);#include "stdafx.h"#include <iostream>#include <windows.h>#include <string>using namespace std;VOID MessageOut(const string &strMess) {MessageBoxA(NULL, strMess.c_str(),NULL,NULL);}string GetXorString(const string &strResore) {string strXorResult = "";for (int index = 0; index < strResore.length(); index++) {strXorResult += strResore[index] ^ 0x1;}return strXorResult;}int main(){string strPassword = "112233";//cout<<GetXorString(strPassword);string strInput = "";cin >> strInput;strPassword == GetXorString(strInput) ? MessageOut("Password Is OK!") : MessageOut("Password Is Wrong");cout << endl;return 0;}

 

总结

以上是生活随笔为你收集整理的8.继续分析一破解加密码获取-最最最简单的注册机的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。