首页
社区
课程
招聘
未解决 C#WPF程序加载的窗口是什么?如何绕过登录界面 60雪币
发表于: 2024-9-1 11:11 1360

未解决 C#WPF程序加载的窗口是什么?如何绕过登录界面 60雪币

2024-9-1 11:11
1360

目的是绕过登录进入程序主界面,问思路

壳信息

1. 看不出如何加载窗口,找不到验证逻辑

DnSpy 加载,在 ticktick_WPF.App 下发现 .ShowMainWindow 函数。
右键“分析”,发现在 ticktick_WPF.Views 中的 LoginDialog 类中 Login()被调用。

Login() 的代码是

1
2
3
4
5
6
7
8
private void Login()
{
    LoginDialog.<Login>d__18 <Login>d__;
    <Login>d__.<>t__builder = AsyncVoidMethodBuilder.Create();
    <Login>d__.<>4__this = this;
    <Login>d__.<>1__state = -1;
    <Login>d__.<>t__builder.Start<LoginDialog.<Login>d__18>(ref <Login>d__);
}

完全看不出和加载窗口有什么关系。

程序是 ticktick.

2.不修改代码,直接编译依然会出现很多错误

图片描述

3.思路是想在点击登录按钮的时候,直接绕过去,验证成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class LoginDialog : Window, IComponentConnector
{
    // ... existing code ...
 
    public static void BypassLogin()
    {
        // Create a dummy user
        UserModel dummyUser = new UserModel
        {
            UserId = "dummy_user_id",
            Username = "DummyUser",
            // Set other necessary properties
        };
 
        // Save the dummy user to local settings
        LocalSettings.Settings.LoginUserId = dummyUser.UserId;
        LocalSettings.Settings.LastLoginAccount = dummyUser.Username;
 
        // Simulate successful login
        // You may need to add more logic here depending on what else your app does after login
        Application.Current.Dispatcher.Invoke(() =>
        {
            // Close the login window if it's open
            foreach (Window window in Application.Current.Windows)
            {
                if (window is LoginDialog)
                {
                    window.Close();
                    break;
                }
            }
 
            // Open your main application window
            // Replace 'MainWindow' with the actual name of your main window class
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
        });
    }

同时在程序入口点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
 
        // Instead of showing the login dialog, call the bypass method
        LoginDialog.BypassLogin();
 
        // Remove or comment out the code that shows the login dialog
        // LoginDialog loginDialog = new LoginDialog();
        // loginDialog.Show();
    }
}

但是找不到入口点。

4. 不需要同步,去掉所有网络功能。

程序是 TickTick https://ticktick.com


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//