把软件的注册机制隐藏在API里最大的好处就是不容易被破解者发现,因为他们经常会用OD的F8快捷键步过API,很少有人跟进去看把?然后…程序的注册机制调用就在XX API中。
原理比较简单,主要是利用了流行的HOOK技术,至于怎么HOOK完全取决于你,反正要能改变API函数的流程即可。
如果选的HOOK点适当,我觉得这一招还是很阴的….
比如:
MessageBoxA
IsDebuggerPresent
等特别容易被忽视的API函数。
在这篇文章中我选择使用MessageBoxA来作为目标。
考虑下面的代码段:

if(key==2)
{MessageBox(XXX,"注册失败!","err",MB_OK);
}else
{
//这个只是假的成功吧。MessageBox(0,"注册成功!","err",MB_OK)
}

注意观察第一个参数,这个是我们的后门标记。
破解者一般都会跳过带”失败“特征的分支…..
假如我们HOOK MessageBoxA这个函数,并留下了进入验证机制的后门….
在 MessageBox(XXX,”注册失败!”,”err”,MB_OK); 中触发后门,触发条件是XXX=后门设置的某个值…
一旦跳过了这一个分支,那么就等于跳过了进入注册机制的路…..呵呵,你懂得…
然后显示注册失败什么的 就可以在验证完后改变MessageBox的参数现实提示。

HOOK操作代码最后放到隐秘一点的地方,比如异常处理函数..
下面是完整的验证DLL代码,写地很简单。

//By 无名侠
void HookMessageBox();
BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:HookMessageBox();case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;
}
char *err = "注册失败!";
char *regok ="注册成功!";
char * FunAddr = NULL;
void HookMessageBox();
int __stdcall REG(int key)
{if (key==0xcccccccc){return 1;}else{return 0;}
}
__declspec(naked) void MyMessagebox()
{_asm{push ebpmov ebp,espcmp [ebp+20],0xAAjne nextpush [ebp+8]call REGpush ebxmov ebx,0mov [ebp+8],ebxmov [ebp+20],ebxpop ebxcmp eax,1jne iferrmov eax,regok mov [ebp+12],eaxjmp next
iferr:mov eax,errmov [ebp+12],eax
next:mov eax,FunAddradd eax,5jmp eax}
}
void HookMessageBox()
{unsigned char JmpCode[5];int addr2;DWORD oldProtect;FunAddr=(char *)GetProcAddress(GetModuleHandleA("User32.dll"),"MessageBoxA");if (!FunAddr){MessageBoxA(0,"error!","",MB_OK);ExitProcess(-1);}JmpCode[0]=0xE9;addr2 = (int)MyMessagebox-(int)FunAddr-5;*((int*)&JmpCode[1])=addr2;VirtualProtect(FunAddr,5,PAGE_EXECUTE_READWRITE,&oldProtect);memcpy(FunAddr,JmpCode,5);VirtualProtect(FunAddr,5,oldProtect,NULL);
}
                                                        By 无名侠 转载请保留出处。

躲猫猫!验证机制隐藏在API中相关推荐

  1. LM/NTLM验证机制

    LM/NTLM验证机制 ☆ 概述 ☆ 挑战/响应模式 ☆ L0pht文档 ☆ Windows NT身份验证机制的脆弱性 ☆ str_to_key()函数 ☆ 如何从明文口令生成LM Hash ☆ 标准 ...

  2. 7. Spring Boot2.5 安全机制与 REST API 身份验证实战

    文章目录 Spring Boot2.5 安全机制与 RESTAPI 身份验证实战 一.Java Spring Boot 2.5 安全机制 Java Spring Boot 2.0 安全机制 安全漏洞 ...

  3. MVC中的统一验证机制~续

    前段时间我发表的关于MVC架构中对验证方式的设计,收到了不少朋友的留言,意思是说过于复杂,复用性不高,当然我的出发点是减少实体部门的代码量. 最近在朋友的建议下,看了另一种验证方式,事实上就是MVC实 ...

  4. ERP框架开发中的License许可验证机制设计与实现 (包含源代码下载)

    许可机制是ERP框架中必不可少的一部分,可以有效的保护框架资源在授权范围内应用,增加企业投资的回报.在研究了几种类型的许可机制(序列号注册码,Web服务联机验证,授权License文件)后,最后选定以 ...

  5. MVC中 数据底层联合JQUERY实现动态的安全的验证机制

    实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...

  6. jQuery EasyUI API 中文文档 - ValidateBox验证框

    jQuery EasyUI API 中文文档 - ValidateBox验证框,使用jQuery EasyUI的朋友可以参考下. 用 $.fn.validatebox.defaults 重写了 def ...

  7. oauth最后的确认按钮_绕过GitHub的OAuth授权验证机制($25000)

    这几年来,信息安全研究一直是我的业余爱好,虽然有很多人专职做漏洞众测以获得奖励,但对我个人来说,我只对一些感兴趣的项目投入不多的时间去深入研究.今年,我想看看自己是否是全职漏洞赏金猎人的料,所以就从6 ...

  8. android 如何调用 隐藏的 API 接口

    怎样查看并且使用 Android 隐藏 API 和内部 API https://www.jianshu.com/p/fbf45770ecc8 android 隐藏API显式调用以及内部资源使用方法 h ...

  9. Uchome的登录验证机制

    2019独角兽企业重金招聘Python工程师标准>>> 登录: 成功后设置cookie //设置cookie ssetcookie('auth', authcode("$s ...

最新文章

  1. 人字拖藏SIM卡、戴微型蓝牙耳机!为考教师岗,多人作弊被抓
  2. 知识库建设的5个步骤
  3. 光敏电阻检测12528
  4. SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
  5. 双鉴探测器是哪两种探测方式结合_火灾探测器、手动火灾探测器和自动火灾报警分类...
  6. python windows系统调用_python日记第四章:python用os和sys模块进行系统调用
  7. 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
  8. python--面向对象--14
  9. 数据结构之图:有向图的介绍与实现,Python代码实现——25
  10. 因未能提交年度报告 瑞幸咖啡收到纳斯达克退市通知
  11. 二十四种设计模式:责任链模式(Chain of Responsibility Pattern)
  12. ListView控件使用简介(转载)
  13. pfSense添加子网的几种方式
  14. 最新米酷6.26影视源码+解析接口+步骤
  15. idea中热部署插件JRebel的激活
  16. 使用dd命令修改bin文件
  17. mac 访问局域网服务器地址
  18. 51单片机课程设计《三路步进电机控制》
  19. 云服务器-ubuntu系统
  20. 2021-2027全球与中国讲解员视频软件市场现状及未来发展趋势

热门文章

  1. C/C++什么是内存泄露,内存泄露如何避免?
  2. Mac提升工作效率从Alfred神器开始(下)
  3. Linux Shell语言并发执行多条命令
  4. config用法汇总
  5. 湖北银行冲刺上市:不良率高于行业均值,有公司欠5亿元未能追回
  6. 2009年全国数模比赛,江苏二等奖名单
  7. 贪心算法-分饼干问题
  8. VOXEL 技术在即时渲染地形中的应用
  9. mysql 分组内求差
  10. python数据获取就业方向_基于Python的就业岗位数据获取与预处理