Created
January 28, 2019 16:09
-
-
Save Himmler/fb6390e16e93550c1c94bd882105f5d7 to your computer and use it in GitHub Desktop.
c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define _CRT_SECURE_NO_WARNINGS | |
#include "windows.h" | |
unsigned int i; | |
char buf[256][MAX_PATH]; | |
FARPROC procs[93]; | |
LPCSTR import_names[] = | |
{ | |
"dict_real_word", | |
"dict_wordid", | |
"fsg_set_add", | |
"fsg_set_get_fsg", | |
"fsg_set_iter", | |
"fsg_set_iter_free", | |
"fsg_set_iter_fsg", | |
"fsg_set_iter_next", | |
"fsg_set_remove", | |
"fsg_set_remove_byname", | |
"fsg_set_select", | |
"ps_add_word", | |
"ps_args", | |
"ps_decode_raw", | |
"ps_decode_senscr", | |
"ps_end_utt", | |
"ps_free", | |
"ps_get_all_time", | |
"ps_get_config", | |
"ps_get_fe", | |
"ps_get_feat", | |
"ps_get_fsgset", | |
"ps_get_hyp", | |
"ps_get_hyp_final", | |
"ps_get_jsgf_rule_text", | |
"ps_get_jsgf_toplevel_rule_names", | |
"ps_get_lattice", | |
"ps_get_lmset", | |
"ps_get_logmath", | |
"ps_get_n_frames", | |
"ps_get_prob", | |
"ps_get_utt_time", | |
"ps_get_uttid", | |
"ps_init", | |
"ps_latlink_baseword", | |
"ps_latlink_iter_free", | |
"ps_latlink_iter_link", | |
"ps_latlink_iter_next", | |
"ps_latlink_nodes", | |
"ps_latlink_pred", | |
"ps_latlink_prob", | |
"ps_latlink_times", | |
"ps_latlink_word", | |
"ps_latnode_baseword", | |
"ps_latnode_entries", | |
"ps_latnode_exits", | |
"ps_latnode_iter", | |
"ps_latnode_iter_free", | |
"ps_latnode_iter_next", | |
"ps_latnode_iter_node", | |
"ps_latnode_prob", | |
"ps_latnode_times", | |
"ps_latnode_word", | |
"ps_lattice_bestpath", | |
"ps_lattice_free", | |
"ps_lattice_get_logmath", | |
"ps_lattice_link", | |
"ps_lattice_n_frames", | |
"ps_lattice_posterior", | |
"ps_lattice_posterior_prune", | |
"ps_lattice_read", | |
"ps_lattice_retain", | |
"ps_lattice_reverse_edges", | |
"ps_lattice_reverse_next", | |
"ps_lattice_traverse_edges", | |
"ps_lattice_traverse_next", | |
"ps_lattice_write", | |
"ps_lattice_write_htk", | |
"ps_load_dict", | |
"ps_mllr_free", | |
"ps_mllr_read", | |
"ps_mllr_retain", | |
"ps_nbest", | |
"ps_nbest_free", | |
"ps_nbest_hyp", | |
"ps_nbest_next", | |
"ps_nbest_seg", | |
"ps_process_cep", | |
"ps_process_raw", | |
"ps_reinit", | |
"ps_retain", | |
"ps_save_dict", | |
"ps_seg_frames", | |
"ps_seg_free", | |
"ps_seg_iter", | |
"ps_seg_next", | |
"ps_seg_prob", | |
"ps_seg_word", | |
"ps_set_fsg_from_rule_list", | |
"ps_start_utt", | |
"ps_update_fsgset", | |
"ps_update_lmset", | |
"ps_update_mllr" | |
}; | |
void find_key() | |
{ | |
if(!i) | |
{ | |
for (i = 0; i < 256; i++) | |
if (buf[i][0]) | |
if (GetAsyncKeyState(i) >> 1) | |
{ | |
i = (int)&buf[i][0]; | |
//__asm mov eax, i; | |
return; | |
} | |
if (i == 256) | |
i = 0; | |
} | |
} | |
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) | |
{ | |
HINSTANCE hinst_dll; | |
if (fdwReason == DLL_PROCESS_ATTACH) | |
{ | |
hinst_dll = LoadLibraryA("pocketsphinx_orig.dll"); | |
if (!hinst_dll) | |
return 0; | |
for (i = 0; i < 93; i++) | |
procs[i] = GetProcAddress(hinst_dll, import_names[i]); | |
for (i = 0; i < 256; i++) | |
{ | |
_itoa(i, &buf[i][0], 10); | |
GetPrivateProfileStringA("main", &buf[i][0], 0, &buf[i][0], MAX_PATH, ".\\settings.ini"); | |
} | |
i = 0; | |
} | |
else if (fdwReason == DLL_PROCESS_DETACH) | |
FreeLibrary(hinst_dll); | |
return 1; | |
} | |
_declspec(naked) void _dict_real_word() | |
{ | |
__asm jmp dword ptr [procs + 0 * 4]; | |
} | |
_declspec(naked) void _dict_wordid() | |
{ | |
__asm jmp dword ptr [procs + 1 * 4]; | |
} | |
_declspec(naked) void _fsg_set_add() | |
{ | |
__asm jmp dword ptr [procs + 2 * 4]; | |
} | |
_declspec(naked) void _fsg_set_get_fsg() | |
{ | |
__asm jmp dword ptr [procs + 3 * 4]; | |
} | |
_declspec(naked) void _fsg_set_iter() | |
{ | |
__asm jmp dword ptr [procs + 4 * 4]; | |
} | |
_declspec(naked) void _fsg_set_iter_free() | |
{ | |
__asm jmp dword ptr [procs + 5 * 4]; | |
} | |
_declspec(naked) void _fsg_set_iter_fsg() | |
{ | |
__asm jmp dword ptr [procs + 6 * 4]; | |
} | |
_declspec(naked) void _fsg_set_iter_next() | |
{ | |
__asm jmp dword ptr [procs + 7 * 4]; | |
} | |
_declspec(naked) void _fsg_set_remove() | |
{ | |
__asm jmp dword ptr [procs + 8 * 4]; | |
} | |
_declspec(naked) void _fsg_set_remove_byname() | |
{ | |
__asm jmp dword ptr [procs + 9 * 4]; | |
} | |
_declspec(naked) void _fsg_set_select() | |
{ | |
__asm jmp dword ptr [procs + 10 * 4]; | |
} | |
_declspec(naked) void _ps_add_word() | |
{ | |
__asm jmp dword ptr [procs + 11 * 4]; | |
} | |
_declspec(naked) void _ps_args() | |
{ | |
__asm jmp dword ptr [procs + 12 * 4]; | |
} | |
_declspec(naked) void _ps_decode_raw() | |
{ | |
__asm jmp dword ptr [procs + 13 * 4]; | |
} | |
_declspec(naked) void _ps_decode_senscr() | |
{ | |
__asm jmp dword ptr [procs + 14 * 4]; | |
} | |
_declspec(naked) void _ps_end_utt() | |
{ | |
__asm jmp dword ptr [procs + 15 * 4]; | |
} | |
_declspec(naked) void _ps_free() | |
{ | |
__asm jmp dword ptr [procs + 16 * 4]; | |
} | |
_declspec(naked) void _ps_get_all_time() | |
{ | |
__asm jmp dword ptr [procs + 17 * 4]; | |
} | |
_declspec(naked) void _ps_get_config() | |
{ | |
__asm jmp dword ptr [procs + 18 * 4]; | |
} | |
_declspec(naked) void _ps_get_fe() | |
{ | |
__asm jmp dword ptr [procs + 19 * 4]; | |
} | |
_declspec(naked) void _ps_get_feat() | |
{ | |
__asm jmp dword ptr [procs + 20 * 4]; | |
} | |
_declspec(naked) void _ps_get_fsgset() | |
{ | |
__asm jmp dword ptr [procs + 21 * 4]; | |
} | |
_declspec(naked) void _ps_get_hyp() | |
{ | |
static unsigned int return_address; | |
_asm | |
{ | |
//save return address | |
push eax | |
mov eax, dword ptr [esp+4] | |
mov return_address, eax | |
pop eax | |
//call original ps_get_hyp | |
add esp, 4 | |
call dword ptr [procs + 22 * 4] | |
sub esp, 4 | |
cmp i, 0 | |
je end | |
mov eax, i | |
xor ecx,ecx | |
mov i, ecx | |
end: | |
//restore return address | |
push eax | |
mov eax, return_address | |
mov dword ptr [esp+4], eax | |
pop eax | |
ret | |
} | |
} | |
_declspec(naked) void _ps_get_hyp_final() | |
{ | |
__asm jmp dword ptr [procs + 23 * 4]; | |
} | |
_declspec(naked) void _ps_get_jsgf_rule_text() | |
{ | |
__asm jmp dword ptr [procs + 24 * 4]; | |
} | |
_declspec(naked) void _ps_get_jsgf_toplevel_rule_names() | |
{ | |
__asm jmp dword ptr [procs + 25 * 4]; | |
} | |
_declspec(naked) void _ps_get_lattice() | |
{ | |
__asm jmp dword ptr [procs + 26 * 4]; | |
} | |
_declspec(naked) void _ps_get_lmset() | |
{ | |
__asm jmp dword ptr [procs + 27 * 4]; | |
} | |
_declspec(naked) void _ps_get_logmath() | |
{ | |
__asm jmp dword ptr [procs + 28 * 4]; | |
} | |
_declspec(naked) void _ps_get_n_frames() | |
{ | |
__asm jmp dword ptr [procs + 29 * 4]; | |
} | |
_declspec(naked) void _ps_get_prob() | |
{ | |
__asm jmp dword ptr [procs + 30 * 4]; | |
} | |
_declspec(naked) void _ps_get_utt_time() | |
{ | |
__asm jmp dword ptr [procs + 31 * 4]; | |
} | |
_declspec(naked) void _ps_get_uttid() | |
{ | |
__asm jmp dword ptr [procs + 32 * 4]; | |
} | |
_declspec(naked) void _ps_init() | |
{ | |
__asm jmp dword ptr [procs + 33 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_baseword() | |
{ | |
__asm jmp dword ptr [procs + 34 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_iter_free() | |
{ | |
__asm jmp dword ptr [procs + 35 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_iter_link() | |
{ | |
__asm jmp dword ptr [procs + 36 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_iter_next() | |
{ | |
__asm jmp dword ptr [procs + 37 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_nodes() | |
{ | |
__asm jmp dword ptr [procs + 38 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_pred() | |
{ | |
__asm jmp dword ptr [procs + 39 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_prob() | |
{ | |
__asm jmp dword ptr [procs + 40 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_times() | |
{ | |
__asm jmp dword ptr [procs + 41 * 4]; | |
} | |
_declspec(naked) void _ps_latlink_word() | |
{ | |
__asm jmp dword ptr [procs + 42 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_baseword() | |
{ | |
__asm jmp dword ptr [procs + 43 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_entries() | |
{ | |
__asm jmp dword ptr [procs + 44 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_exits() | |
{ | |
__asm jmp dword ptr [procs + 45 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_iter() | |
{ | |
__asm jmp dword ptr [procs + 46 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_iter_free() | |
{ | |
__asm jmp dword ptr [procs + 47 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_iter_next() | |
{ | |
__asm jmp dword ptr [procs + 48 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_iter_node() | |
{ | |
__asm jmp dword ptr [procs + 49 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_prob() | |
{ | |
__asm jmp dword ptr [procs + 50 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_times() | |
{ | |
__asm jmp dword ptr [procs + 51 * 4]; | |
} | |
_declspec(naked) void _ps_latnode_word() | |
{ | |
__asm jmp dword ptr [procs + 52 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_bestpath() | |
{ | |
__asm jmp dword ptr [procs + 53 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_free() | |
{ | |
__asm jmp dword ptr [procs + 54 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_get_logmath() | |
{ | |
__asm jmp dword ptr [procs + 55 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_link() | |
{ | |
__asm jmp dword ptr [procs + 56 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_n_frames() | |
{ | |
__asm jmp dword ptr [procs + 57 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_posterior() | |
{ | |
__asm jmp dword ptr [procs + 58 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_posterior_prune() | |
{ | |
__asm jmp dword ptr [procs + 59 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_read() | |
{ | |
__asm jmp dword ptr [procs + 60 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_retain() | |
{ | |
__asm jmp dword ptr [procs + 61 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_reverse_edges() | |
{ | |
__asm jmp dword ptr [procs + 62 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_reverse_next() | |
{ | |
__asm jmp dword ptr [procs + 63 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_traverse_edges() | |
{ | |
__asm jmp dword ptr [procs + 64 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_traverse_next() | |
{ | |
__asm jmp dword ptr [procs + 65 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_write() | |
{ | |
__asm jmp dword ptr [procs + 66 * 4]; | |
} | |
_declspec(naked) void _ps_lattice_write_htk() | |
{ | |
__asm jmp dword ptr [procs + 67 * 4]; | |
} | |
_declspec(naked) void _ps_load_dict() | |
{ | |
__asm jmp dword ptr [procs + 68 * 4]; | |
} | |
_declspec(naked) void _ps_mllr_free() | |
{ | |
__asm jmp dword ptr [procs + 69 * 4]; | |
} | |
_declspec(naked) void _ps_mllr_read() | |
{ | |
__asm jmp dword ptr [procs + 70 * 4]; | |
} | |
_declspec(naked) void _ps_mllr_retain() | |
{ | |
__asm jmp dword ptr [procs + 71 * 4]; | |
} | |
_declspec(naked) void _ps_nbest() | |
{ | |
__asm jmp dword ptr [procs + 72 * 4]; | |
} | |
_declspec(naked) void _ps_nbest_free() | |
{ | |
__asm jmp dword ptr [procs + 73 * 4]; | |
} | |
_declspec(naked) void _ps_nbest_hyp() | |
{ | |
__asm jmp dword ptr [procs + 74 * 4]; | |
} | |
_declspec(naked) void _ps_nbest_next() | |
{ | |
__asm jmp dword ptr [procs + 75 * 4]; | |
} | |
_declspec(naked) void _ps_nbest_seg() | |
{ | |
__asm jmp dword ptr [procs + 76 * 4]; | |
} | |
_declspec(naked) void _ps_process_cep() | |
{ | |
__asm jmp dword ptr [procs + 77 * 4]; | |
} | |
_declspec(naked) void _ps_process_raw() | |
{ | |
find_key(); | |
__asm jmp dword ptr [procs + 78 * 4]; | |
} | |
_declspec(naked) void _ps_reinit() | |
{ | |
__asm jmp dword ptr [procs + 79 * 4]; | |
} | |
_declspec(naked) void _ps_retain() | |
{ | |
__asm jmp dword ptr [procs + 80 * 4]; | |
} | |
_declspec(naked) void _ps_save_dict() | |
{ | |
__asm jmp dword ptr [procs + 81 * 4]; | |
} | |
_declspec(naked) void _ps_seg_frames() | |
{ | |
__asm jmp dword ptr [procs + 82 * 4]; | |
} | |
_declspec(naked) void _ps_seg_free() | |
{ | |
__asm jmp dword ptr [procs + 83 * 4]; | |
} | |
_declspec(naked) void _ps_seg_iter() | |
{ | |
__asm jmp dword ptr [procs + 84 * 4]; | |
} | |
_declspec(naked) void _ps_seg_next() | |
{ | |
__asm jmp dword ptr [procs + 85 * 4]; | |
} | |
_declspec(naked) void _ps_seg_prob() | |
{ | |
__asm jmp dword ptr [procs + 86 * 4]; | |
} | |
_declspec(naked) void _ps_seg_word() | |
{ | |
__asm jmp dword ptr [procs + 87 * 4]; | |
} | |
_declspec(naked) void _ps_set_fsg_from_rule_list() | |
{ | |
__asm jmp dword ptr [procs + 88 * 4]; | |
} | |
_declspec(naked) void _ps_start_utt() | |
{ | |
__asm jmp dword ptr [procs + 89 * 4]; | |
} | |
_declspec(naked) void _ps_update_fsgset() | |
{ | |
__asm jmp dword ptr [procs + 90 * 4]; | |
} | |
_declspec(naked) void _ps_update_lmset() | |
{ | |
__asm jmp dword ptr [procs + 91 * 4]; | |
} | |
_declspec(naked) void _ps_update_mllr() | |
{ | |
__asm jmp dword ptr [procs + 92 * 4]; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment