非常复杂的一个软件 高手帮忙看看
本帖最后由 fancyblue 于 2023-4-15 08:57 编辑非常复杂的一个软件 高手帮忙看看不要成品 只要一个思路指点
找不到真码或者返回值在哪里计算 也找不到有用的字符串
备注: 注册码不是唯一的 有试用期的有激活的 有重启验证
发送注册信息
真码开头部分比较
不知道返回值 是什么意思
然后再往后就失败了
暂停法堆栈走不通 堆栈比32位复杂 有多线程
字符串正常找不到,只能在内存里面找到,但是没用
IDA分析了下但是用的不好看不出来问题
if ( !(unsigned __int8)_scrt_initialize_crt(1i64) )
{
sub_1401C3718(7i64);
goto LABEL_20;
}
v2 = 0;
LOBYTE(a1) = _scrt_acquire_startup_lock(v1);
v3 = (unsigned int)dword_1403064C0;
if ( dword_1403064C0 == 1 )
{
LABEL_20:
sub_1401C3718(7i64);
goto LABEL_21;
}
if ( dword_1403064C0 )
{
v2 = 1;
}
else
{
dword_1403064C0 = 1;
if ( (unsigned int)initterm_e(&unk_1401FDC60, &unk_1401FDC80) )
return 255i64;
initterm(&unk_1401FD650, &unk_1401FDC58);
dword_1403064C0 = 2;
}
LOBYTE(v3) = a1;
_scrt_release_startup_lock(v3);
v6 = (_QWORD *)sub_1401C3A68(v5);
v8 = (void (__fastcall **)(_QWORD, __int64))v6;
if ( *v6 && (unsigned __int8)sub_1401C2D50(v6) )
(*v8)(0i64, 2i64);
v9 = (_QWORD *)sub_1401C3A70(v7);
v11 = v9;
if ( *v9 && (unsigned __int8)sub_1401C2D50(v9) )
register_thread_local_exe_atexit_callback(*v11);
v12 = (unsigned __int16)_scrt_get_show_window_mode(v10);
v14 = (CHAR *)get_narrow_winmain_command_line(v13);
a1 = WinMain(&_ImageBase, 0i64, v14, v12);
if ( !(unsigned __int8)sub_1401C38A8(v15) )
LABEL_21:
exit(a1);
if ( !v2 )
cexit();
LOBYTE(v16) = 1;
sub_1401C2E0C(v16, 0i64);
return a1;
第一步设法强制输出写入注册码。。。并发现位置,最好能知道些简单的格式(这步若办不到,后面连带关系就断了,也就甭玩了。也说明技术不过关)
第二步,找到重启后最后一次出现注册码的位置
找到界面初始化的地方,
二者之间正是修改返回值的绝佳位置
冥界3大法王 发表于 2023-4-12 15:35
第一步设法强制输出写入注册码。。。并发现位置,最好能知道些简单的格式(这步若办不到,后面连带关系就断 ...
非常感谢我再试试 本帖最后由 冥界3大法王 于 2023-4-12 18:08 编辑
@fancyblue
别告诉我你不知道,授权钥匙字符串提示信息在哪个文件里?
别告诉我你不知道,生成的授权位于哪个文件里?
别告诉我你不知道,如何捕捉读取文件?
你要修改的模块(主攻方向)上来都没有搞对。
不喜欢MFC程序,剩下的你自己玩吧。跟到读取到的用户名,公司名,注册码
返回真
还要修改服务器检测
"TA000032","启动激活向导"
"TA000035","请选择激活方法"
"TA000036","连接互联网激活"
"TA000037","如果您有互联网连接,请选择此选项。向导将使用默认的互联网连接设置自动执行激活"
"TA000038","手动激活"
"TA000039","如果您没有互联网连接,请选择该选项。你需要联系当地的软件代表并从他那里得到激活码"
"TA000042","你已经选择了网络激活选项"
"TA000043","如果单击下一步,向导将连接到激活服务器,并使用默认的互联网连接设置执行自动程序激活"
"TA000044","如果你没有互联网连接,或者出现任何错误,请返回使用手动激活选项"
"TA000045","单击下一步连接到激活服务器"
"TA000046","互联网激活正在进行中"
"TA000047","解析域名%s..."
"TA000048","连接到..."
"TA000049","发送请求..."
"TA000050","等待响应..."
"TA000051","无法连接到激活服务器"
"TA000052","这个程序已经在允许的计算机上被激活了,并且不能在这个计算机上使用。如果你改变了你的电脑的硬件,请返回使用手动激活选项"
"TA000053","你已经超过了激活的上限。不允许使用互联网激活,请返回使用手动激活选项"
"TA000054","连网激活"
"TA000055","手动激活"
"TA000056","想要在不连接互联网的情况下激活程序,你需要本地代{过}{滤}理的支持"
"TA000056A","要在没有互联网的情况下激活程序,请与%s联系"
"TA000057","请与当地代{过}{滤}理联系,并提供给他如下的安装ID:"
"TA000057A","请与%s联系,以获取以下安装Id"
"TA000058","代{过}{滤}理将会给您提供激活码。(你可以关闭程序,当你拿到激活码后再继续安装)"
"TA000058A","%s将为您的计算机生成激活码。(您可以关闭这个对话框,并在您获得激活码后继续)。"
"TA000059","在此输入激活码"
"TA000060","输入的激活码不正确,请检查并重新输入"
"TA000061","输入的激活码不正确,请检查第%d组中的字符并重新输入"
"TA000062","错误"
"TA000063","程序激活失败"
"TA000064","Warning"
"TA000066","点击取消终止激活操作或点击返回重试上一步操作"
"TA000067","完成"
"TA000068","程序激活成功"
"TA000069","To finish Activation Wizard the program must be restarted."
"TA000070","程序激活终止"
"TA000071","未完成激活操作您将无法使用本程序,程序将被停止"
license
{
installation_key string {8989898989898989899}
user_name string {FaWang}
organization string {NineBell}
hardware_id_version int {0}
installation_id string {}
activation_key string {}
configuration_index int {0}
}
这些都是自己找到的
url = http://www.ir-lc.com
path = /user/register
success_url_substring = result=success
估计都有某种关系吧。
截图地方往下跟,里面又是另一个dll
时间关系 ,你自己往下玩吧。 冥界3大法王 发表于 2023-4-12 17:59
@fancyblue
别告诉我你不知道,授权钥匙字符串提示信息在哪个文件里?
别告诉我你不知道,生成的授权位于 ...
谢谢了
除了TA00000这些没有找到其他都找到了找不到关键的地方能跟着激活码走一段
另外就是注册码不是唯一的 跟用户名 单位没有任何关系 主要就是激活码所以现在找找这个关算法部分 冥界3大法王 发表于 2023-4-12 17:59
@fancyblue
别告诉我你不知道,授权钥匙字符串提示信息在哪个文件里?
别告诉我你不知道,生成的授权位于 ...
软件跟着走了一遍 还是不知道那里什么用,为什么返回这种乱码,另外就是他的字符串找不到在哪里藏着 应该不是服务器的
法王大佬,您这个nb的64dbg给发一个吧或者插件给发一个吧。 本帖最后由 fancyblue 于 2023-4-28 16:24 编辑
帮忙看看 冥界3大法王 发表于 2023-4-12 17:59
@fancyblue
别告诉我你不知道,授权钥匙字符串提示信息在哪个文件里?
别告诉我你不知道,生成的授权位于 ...
法王大佬 有时间再帮忙深入下这个程序还挺复杂还涉及加密 解密 跟着走 感觉断崖式的就返回错误了 OD好多syscall 是什么意思?》 冥界3大法王 发表于 2023-4-12 15:35
第一步设法强制输出写入注册码。。。并发现位置,最好能知道些简单的格式(这步若办不到,后面连带关系就断 ...
0000000002F27748 | FF15 72130200 | call qword ptr ds:[<&Ordinal#1032>] |
0000000002F2774E | 48:8D15 DB5A0200 | lea rdx,qword ptr ds: | rdx:"3272905", 0000000002F4D230:"3272905"
0000000002F27755 | 48:8D8D 78090000 | lea rcx,qword ptr ss: | :"携L"
0000000002F2775C | E8 AFA30000 | call gmtlbrd.2F31B10 |
0000000002F27761 | 48:8BD8 | mov rbx,rax |
0000000002F27764 | FF15 86140200 | call qword ptr ds:[<&public: static class|
call gmtlbrd.2F31B10这个函数应该是判断正确与否的 ( 这个gmtlbrd.dll 判断好英文输出然后nucleus.dll是把英文转化为汉语输出 XXXXtime模块是判断使用账号有效期的)
按照您说的跟到call gmtlbrd.2F31B10这个模块但是具体修改里面哪个返回值您帮忙看看 还有高手给看看吗?
页:
[1]
2