本人的第一个,一个奇怪的cm,有反调试和不算花指令的花指令
本帖最后由 ttbbs 于 2021-11-27 16:43 编辑成功案例(需要控制台运行)
自己觉得有点难,期待大佬来挑战
目前只有人爆破,但希望给出算法
你们要的源码:
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <time.h>
typedef NTSTATUS(NTAPI* pfnNtSetInformationThread)(_In_ HANDLE ThreadHandle, _In_ ULONG ThreadInformationClass,
_In_ PVOID ThreadInformation, _In_ ULONG ThreadInformationLength);
int tii;
void anti_debug_by_HideFromDebugger(void) {
HMODULE ntdll = LoadLibrary(TEXT("ntdll.dll"));
if (ntdll == NULL) {
abort();
}
pfnNtSetInformationThread ntSetInfoThread = (pfnNtSetInformationThread)GetProcAddress(ntdll, "NtSetInformationThread");
if (ntSetInfoThread == NULL) {
abort();
}
ntSetInfoThread(GetCurrentThread(), 0x11, NULL, 0);
}
void anti_debug_by_CheckRemoteDebuggerPresent(void) {
BOOL isRemoteDebuggerPresent = FALSE;
if (CheckRemoteDebuggerPresent(GetCurrentProcess(), &isRemoteDebuggerPresent)) {
if (isRemoteDebuggerPresent == TRUE) {
ExitProcess(0);
}
}
}
int ti() {
return int(clock());
}
int checker() {
__asm {
call anti_debug_by_CheckRemoteDebuggerPresent
pushad
push s6
mov ecx, s5
mov eax, 0xC3000000
s5:mov ebx, ecx
cmp ecx, 0x0
je junkcode3
sub ecx, 0x1
jmp ebx
junkcode3 :
clc
cmc
mov eax, 0
jmp junkcode4
s6 : add eax, s4 - 0xC3000000
mov ecx, s7
mov edx, 0xD0FF1716
s7 : mov ebx, ecx
sub ebx, 4
cmp ecx, 0x0
je junkcode4
sub ecx, 0x1
jmp ebx
junkcode4 :
clc
cmc
mov eax, 1
jmp junkcode3
s4 : add esp, 0x4
popad
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
shl tii,2
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
clc
cmc
}
anti_debug_by_HideFromDebugger();
}
int main()
{
int ps;
tii = ti();
int tii1 = ti();
checker();
__asm {
call anti_debug_by_CheckRemoteDebuggerPresent
pushad
push s2
mov ecx, s1
mov eax, 0xC3000000
s1:mov ebx, ecx
cmp ecx, 0x0
je junkcode
sub ecx, 0x1
jmp ebx
junkcode :
clc
cmc
mov eax, 0
jmp junkcode2
s2 : add eax, s4 - 0xC3000000
mov ecx, s3
mov edx, 0xD0FF1716
s3 : mov ebx, ecx
sub ebx, 4
cmp ecx, 0x0
je junkcode2
sub ecx, 0x1
jmp ebx
junkcode2 :
clc
cmc
mov eax,1
jmp junkcode
s4 : add esp, 0x4
popad
}
if (clock() - tii1 > 1000) ExitProcess(0);
std::cout << "password?";
std::cin >> ps;
tii = tii + tii1;
if (ps == tii) {
std::cout << "success";
}
else
{
ExitProcess(0);
}
}
不整了直接上吧 czyr 发表于 2021-11-21 18:59
不整了直接上吧
爆破?希望能给出算法哦! ttbbs 发表于 2021-11-21 19:45
爆破?希望能给出算法哦!
能爆破的要算法有什么意义 没看懂什么意思,确定跟输入内容有关? gaomenggao 发表于 2021-11-22 11:12
能破解的要算法有什么意义?
请不要恶意灌水,发之前的人发过的 能否公布下原理 本帖最后由 ttbbs 于 2021-11-22 20:54 编辑
搜索曾经的回忆 发表于 2021-11-22 20:23
能否公布下原理
周末发源码,主要是靠读取时间经过运算得密码,再与输入的密码做比对
页:
[1]
2