逆向求助,反汇编一个软件,进去看不懂了
目标软件:https://wwp.lanzouy.com/u/lanlajiao番茄lol挂机
基于学习的目的,研究了几天,想着如何修改剩余可用时间,被我找到了一个重要线索 0045BF3D ,但里面的东西我看不大懂了,求大佬帮忙逆向分析修改剩余时间,教教我如何分析!
(这个断点要等软件加载完毕再打开,大概是打开软件等15秒,输入试用的验证码点击确定前再打开!会有几次循环,大概循环第10次左右,剩余时间就会被加载了)
另外,找到了其他几个有趣的断点
00404AC8 nop
0040BD90nop
00413207一系列的验证破解事件,需要jmp
004166C9nop
0041DA2F
0041DA56
本帖最后由 teety 于 2023-5-29 19:01 编辑
void 登录按钮_被单击()
{
char *c; // eax
char *v2; // eax
const char *v3; // eax
char *v4; //
char *v5; //
BOOL v6; //
char *v7; //
char *lpMem; //
char *lpMema; //
char *lpMemb; //
void *lpMemc; //
if ( dword_A57FC8 )
{
按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, (UNIT_PROPERTY_VALUE)1, 0);
c = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
lpMem = c;
if ( !c )
c = (char *)&byte_579333;
v5 = 核心支持库命令((unsigned int)取文本长度, 1, c, 0, -2147483644).c;
if ( lpMem )
释放内存(lpMem);
if ( (int)v5 > 16 || (int)v5 < 6 )
{
连续省略参数(6);
核心支持库命令((unsigned int)信息框, 4, &unk_579334, 0, -2147483644, 0, 0, -2147482879);
编辑框::编辑框1_写属性_内容(
0x52010002u,
0x16010008u,
8u,
0xFFFFFFFF,
(UNIT_PROPERTY_VALUE)&byte_579333,
0);
}
else
{
lpMema = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
v6 = 文本比较_0(lpMema, (char *)&byte_579333) == 0;
if ( lpMema )
释放内存(lpMema);
if ( v6 )
{
连续省略参数(6);
核心支持库命令((unsigned int)信息框, 4, &unk_579349, 0, -2147483644, 0, 0, -2147482879);
}
else
{
v2 = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
lpMemb = v2;
if ( !v2 )
v2 = (char *)&byte_579333;
核心支持库命令(
(unsigned int)写配置项,
4,
"c:\\【QQ号隐藏】\\gj-data.ini",
0,
-2147483644,
&byte_579358,
0,
-2147483644,
&byte_579358,
0,
-2147483644,
v2,
0,
-2147483644);
if ( lpMemb )
释放内存(lpMemb);
if ( dword_A57FC8 == 1 )
{
lpMemc = (void *)sub_402067();
v7 = 编辑框::编辑框1_读属性_内容(0x52010002u, 0x16010008u, 8u, 0xFFFFFFFF).c;
v4 = 文本相加(5, &unk_57937E, v7, "]*", lpMemc, "*");
if ( v7 )
释放内存(v7);
if ( lpMemc )
释放内存(lpMemc);
v3 = v4;
if ( !v4 )
v3 = &byte_579333;
核心支持库命令((unsigned int)客户.发送数据, 2, 1375797250, 369164293, 65573, v3, 0, -2147483644);
if ( v4 )
释放内存(v4);
}
sub_401E0E(2000, 1, 0i64, 0);
按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, 0, 0);
}
}
}
else
{
sub_401552();
按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, (UNIT_PROPERTY_VALUE)1, 0);
按钮::登录按钮_写属性_标题(
0x52010002u,
0x16010006u,
0xAu,
0xFFFFFFFF,
(UNIT_PROPERTY_VALUE)&unk_57931C,
0);
sub_401E0E(2000, 1, 0i64, 0);
按钮::登录按钮_写属性_禁止(0x52010002u, 0x16010006u, 6u, 0xFFFFFFFF, 0, 0);
按钮::登录按钮_写属性_标题(
0x52010002u,
0x16010006u,
0xAu,
0xFFFFFFFF,
(UNIT_PROPERTY_VALUE)&unk_57932E,
0);
}
}
void sub_401552()
{
char *c; // eax
const char *v1; // eax
char *v2; // eax
char *v3; //
char *v4; //
char *v5; //
char *v6; //
LPVOID lpMem; // BYREF
if ( !dword_A57FC8 )
{
c = 核心支持库命令((unsigned int)转换为IP地址, 1, "【此处服务器域名地址隐藏】", 0, -2147483644).c;
lpMem = c;
if ( !c )
c = (char *)&byte_579333;
v4 = 核心支持库命令(
(unsigned int)客户.连接,
3,
1375797250,
369164293,
65573,
c,
0,
-2147483644,
3344,
0,
-2147482879).c;
if ( lpMem )
释放内存(lpMem);
if ( v4 == (char *)1 )
{
dword_A57FC8 = 1;
}
else
{
lpMem = "【此处服务器域名地址隐藏】";
v5 = (char *)sub_40176A(&lpMem);
if ( lpMem )
释放内存(lpMem);
v1 = v5;
if ( !v5 )
v1 = &byte_579333;
v3 = 核心支持库命令(
(unsigned int)客户.连接,
3,
1375797250,
369164293,
65573,
v1,
0,
-2147483644,
3344,
0,
-2147482879).c;
if ( v5 )
释放内存(v5);
if ( v3 == (char *)1 )
{
dword_A57FC8 = 1;
}
else
{
v2 = 核心支持库命令((unsigned int)转换为IP地址, 1, "【此处服务器域名地址隐藏】", 0, -2147483644).c;
lpMem = v2;
if ( !v2 )
v2 = (char *)&byte_579333;
v6 = 核心支持库命令(
(unsigned int)客户.连接,
3,
1375797250,
369164293,
65573,
v2,
0,
-2147483644,
3344,
0,
-2147482879).c;
if ( lpMem )
释放内存(lpMem);
dword_A57FC8 = v6 == (char *)1;
}
}
}
}
teety 发表于 2023-5-29 18:44
void 登录按钮_被单击()
{
char *c; // eax
你咋能看源码?还有分析过程呢。。。。 本帖最后由 teety 于 2023-5-29 22:42 编辑
我好大家好 发表于 2023-5-29 20:01
你咋能看源码?还有分析过程呢。。。。
IDA修改版 + E语言反汇编插件,另外该软件还有使用定时器周期性向服务器发送验证信息 本帖最后由 我好大家好 于 2023-5-30 10:24 编辑
teety 发表于 2023-5-29 22:37
IDA修改版 + E语言反汇编插件,另外该软件还有使用定时器周期性向服务器发送验证信息
能不能吧进入后的剩余时间改掉呢?定时发送的我再看
页:
[1]