|
Packit |
fd8b60 |
#include <windows.h>
|
|
Packit |
fd8b60 |
#include "leashdll.h"
|
|
Packit |
fd8b60 |
#include <leashwin.h>
|
|
Packit |
fd8b60 |
#include "leash-int.h"
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
HINSTANCE hLeashInst;
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
HINSTANCE hKrb5 = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hKrb524 = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hSecur32 = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hComErr = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hService = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hProfile = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hPsapi = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hToolHelp32 = 0;
|
|
Packit |
fd8b60 |
HINSTANCE hCcapi = 0;
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// krb5 functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_change_password);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_alloc);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_free);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_init);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_tkt_life);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_renew_life);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_forwardable);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_proxiable);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_address_list);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_opt_set_out_ccache);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_init_creds_password);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_build_principal_ext);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_get_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_resolve);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_default);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_default_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_set_default_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_initialize);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_destroy);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_close);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_store_cred);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_copy_creds);
|
|
Packit |
fd8b60 |
// DECL_FUNC_PTR(krb5_cc_retrieve_cred);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_get_principal);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_start_seq_get);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_next_cred);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_end_seq_get);
|
|
Packit |
fd8b60 |
// DECL_FUNC_PTR(krb5_cc_remove_cred);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_set_flags);
|
|
Packit |
fd8b60 |
// DECL_FUNC_PTR(krb5_cc_get_type);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_context);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_cred_contents);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_principal);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_in_tkt_with_password);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_init_context);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_parse_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_timeofday);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_timestamp_to_sfstring);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_unparse_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_credentials);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_mk_req);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_sname_to_principal);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_credentials_renew);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_data);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_data_contents);
|
|
Packit |
fd8b60 |
// DECL_FUNC_PTR(krb5_get_realm_domain);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_unparsed_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_os_localaddr);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_copy_keyblock_contents);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_copy_data);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_creds);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_build_principal);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_renewed_creds);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_default_config_files);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_config_files);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_default_realm);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_ticket);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_decode_ticket);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_get_host_realm);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_host_realm);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_c_random_make_octets);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_addresses);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_default_realm);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_principal_compare);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_string_to_deltat);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_is_config_principal);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cccol_cursor_new);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cccol_cursor_free);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cccol_cursor_next);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_cache_match);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_get_type);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_new_unique);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_support_switch);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_switch);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_cc_get_full_name);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5_free_string);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(krb5int_cc_user_set_default_name);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// ComErr functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(com_err);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(error_message);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// Profile functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_init);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_release);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_get_subsection_names);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_free_list);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_get_string);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_release_string);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(profile_get_integer);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// Service functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(OpenSCManagerA);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(OpenServiceA);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(QueryServiceStatus);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(CloseServiceHandle);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaNtStatusToWinError);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// LSA Functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaConnectUntrusted);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaLookupAuthenticationPackage);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaCallAuthenticationPackage);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaFreeReturnBuffer);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(LsaGetLogonSessionData);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// CCAPI Functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(cc_initialize);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(cc_shutdown);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(cc_get_NC_info);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(cc_free_NC_info);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO k5_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_change_password),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_alloc),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_free),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_init),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_tkt_life),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_renew_life),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_forwardable),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_proxiable),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_address_list),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_opt_set_out_ccache),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_init_creds_password),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_build_principal_ext),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_get_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_resolve),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_default),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_default_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_set_default_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_initialize),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_destroy),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_close),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_copy_creds),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_store_cred),
|
|
Packit |
fd8b60 |
// MAKE_FUNC_INFO(krb5_cc_retrieve_cred),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_get_principal),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_start_seq_get),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_next_cred),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_end_seq_get),
|
|
Packit |
fd8b60 |
// MAKE_FUNC_INFO(krb5_cc_remove_cred),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_set_flags),
|
|
Packit |
fd8b60 |
// MAKE_FUNC_INFO(krb5_cc_get_type),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_context),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_cred_contents),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_principal),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_in_tkt_with_password),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_init_context),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_parse_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_timeofday),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_timestamp_to_sfstring),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_unparse_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_credentials),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_mk_req),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_sname_to_principal),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_credentials_renew),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_data),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_data_contents),
|
|
Packit |
fd8b60 |
// MAKE_FUNC_INFO(krb5_get_realm_domain),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_unparsed_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_os_localaddr),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_copy_keyblock_contents),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_copy_data),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_creds),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_build_principal),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_renewed_creds),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_addresses),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_default_config_files),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_config_files),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_default_realm),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_ticket),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_decode_ticket),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_get_host_realm),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_host_realm),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_c_random_make_octets),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_default_realm),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_principal_compare),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_string_to_deltat),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_is_config_principal),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cccol_cursor_new),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cccol_cursor_next),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cccol_cursor_free),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_cache_match),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_get_type),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_new_unique),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_support_switch),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_switch),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_cc_get_full_name),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5_free_string),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(krb5int_cc_user_set_default_name),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO profile_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_init),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_release),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_get_subsection_names),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_free_list),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_get_string),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_release_string),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(profile_get_integer),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO ce_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(com_err),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(error_message),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO service_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(OpenSCManagerA),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(OpenServiceA),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(QueryServiceStatus),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(CloseServiceHandle),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaNtStatusToWinError),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO lsa_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaConnectUntrusted),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaLookupAuthenticationPackage),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaCallAuthenticationPackage),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaFreeReturnBuffer),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(LsaGetLogonSessionData),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// CCAPI v2
|
|
Packit |
fd8b60 |
FUNC_INFO ccapi_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(cc_initialize),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(cc_shutdown),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(cc_get_NC_info),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(cc_free_NC_info),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// psapi functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(GetModuleFileNameExA);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(EnumProcessModules);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO psapi_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(GetModuleFileNameExA),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(EnumProcessModules),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// toolhelp functions
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(CreateToolhelp32Snapshot);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(Module32First);
|
|
Packit |
fd8b60 |
DECL_FUNC_PTR(Module32Next);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
FUNC_INFO toolhelp_fi[] = {
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(CreateToolhelp32Snapshot),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(Module32First),
|
|
Packit |
fd8b60 |
MAKE_FUNC_INFO(Module32Next),
|
|
Packit |
fd8b60 |
END_FUNC_INFO
|
|
Packit |
fd8b60 |
};
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
BOOL WINAPI
|
|
Packit |
fd8b60 |
DllMain(
|
|
Packit |
fd8b60 |
HANDLE hinstDLL,
|
|
Packit |
fd8b60 |
DWORD fdwReason,
|
|
Packit |
fd8b60 |
LPVOID lpReserved
|
|
Packit |
fd8b60 |
)
|
|
Packit |
fd8b60 |
{
|
|
Packit |
fd8b60 |
hLeashInst = hinstDLL;
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
switch (fdwReason)
|
|
Packit |
fd8b60 |
{
|
|
Packit |
fd8b60 |
case DLL_PROCESS_ATTACH:
|
|
Packit |
fd8b60 |
{
|
|
Packit |
fd8b60 |
OSVERSIONINFO osvi;
|
|
Packit |
fd8b60 |
LoadFuncs(KRB5_DLL, k5_fi, &hKrb5, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
LoadFuncs(COMERR_DLL, ce_fi, &hComErr, 0, 0, 1, 0);
|
|
Packit |
fd8b60 |
LoadFuncs(SERVICE_DLL, service_fi, &hService, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
LoadFuncs(SECUR32_DLL, lsa_fi, &hSecur32, 0, 1, 1, 1);
|
|
Packit |
fd8b60 |
LoadFuncs(PROFILE_DLL, profile_fi, &hProfile, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
LoadFuncs(CCAPI_DLL, ccapi_fi, &hCcapi, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
memset(&osvi, 0, sizeof(OSVERSIONINFO));
|
|
Packit |
fd8b60 |
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
|
Packit |
fd8b60 |
GetVersionEx(&osvi);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
// XXX: We should really use feature testing, first
|
|
Packit |
fd8b60 |
// checking for CreateToolhelp32Snapshot. If that's
|
|
Packit |
fd8b60 |
// not around, we try the psapi stuff.
|
|
Packit |
fd8b60 |
//
|
|
Packit |
fd8b60 |
// Only load LSA functions if on NT/2000/XP
|
|
Packit |
fd8b60 |
if(osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
|
|
Packit |
fd8b60 |
{
|
|
Packit |
fd8b60 |
// Windows 9x
|
|
Packit |
fd8b60 |
LoadFuncs(TOOLHELPDLL, toolhelp_fi, &hToolHelp32, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
hPsapi = 0;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
else if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
|
|
Packit |
fd8b60 |
{
|
|
Packit |
fd8b60 |
// Windows NT
|
|
Packit |
fd8b60 |
LoadFuncs(PSAPIDLL, psapi_fi, &hPsapi, 0, 1, 0, 0);
|
|
Packit |
fd8b60 |
hToolHelp32 = 0;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
/*
|
|
Packit |
fd8b60 |
* Register window class for the MITPasswordControl that
|
|
Packit |
fd8b60 |
* replaces normal edit controls for password input.
|
|
Packit |
fd8b60 |
* zero any fields we don't explicitly set
|
|
Packit |
fd8b60 |
*/
|
|
Packit |
fd8b60 |
hLeashInst = hinstDLL;
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
Register_MITPasswordEditControl(hLeashInst);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
return TRUE;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
case DLL_PROCESS_DETACH:
|
|
Packit |
fd8b60 |
if (hKrb5)
|
|
Packit |
fd8b60 |
FreeLibrary(hKrb5);
|
|
Packit |
fd8b60 |
if (hCcapi)
|
|
Packit |
fd8b60 |
FreeLibrary(hCcapi);
|
|
Packit |
fd8b60 |
if (hProfile)
|
|
Packit |
fd8b60 |
FreeLibrary(hProfile);
|
|
Packit |
fd8b60 |
if (hComErr)
|
|
Packit |
fd8b60 |
FreeLibrary(hComErr);
|
|
Packit |
fd8b60 |
if (hService)
|
|
Packit |
fd8b60 |
FreeLibrary(hService);
|
|
Packit |
fd8b60 |
if (hSecur32)
|
|
Packit |
fd8b60 |
FreeLibrary(hSecur32);
|
|
Packit |
fd8b60 |
if (hPsapi)
|
|
Packit |
fd8b60 |
FreeLibrary(hPsapi);
|
|
Packit |
fd8b60 |
if (hToolHelp32)
|
|
Packit |
fd8b60 |
FreeLibrary(hToolHelp32);
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
return TRUE;
|
|
Packit |
fd8b60 |
default:
|
|
Packit |
fd8b60 |
return TRUE;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
}
|