吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3341|回复: 13

[经验资料] 躲猫猫!验证机制隐藏在API中高级技术

[复制链接]
king 发表于 2015-9-28 15:15 | 显示全部楼层 |阅读模式

SMC是一种局部代码加密技术,通过对一段代码进行加密来达到增加逆向工程难度或者免杀的目的。
编写SMC代码不是汇编语言的专利。——《加密与解密 第三版》是的,SMC不仅能使用汇编上实现,还能很容易的使用VC实现,但是有一个比较致命缺陷:要精准的定位某个函数非常麻烦,所以我们就要以区块为加密的基础单位。
[B]预备知识[/B]
需要一点点的PE结构基础就ok啦。
[B]加密算法[/B]
既然是加密,就必然需要加密算法。Internet上有许多优秀的开源加密算法,在这篇文章中我将使用自己编写的加密算法。
加密原理简单,是大家耳熟能详的异或加密。
异或的运算方法是一个二进制运算:
1^1=0
0^0=0
1^0=1
0^1=1
两者相等为0,不等为1.
对于一个字符来说,都可以用二进制码来表示.如A:01000001
字符的异或就是对每一位进行二进制运算.
用于加密算法时,假设你要加密的内容为A,密钥为B,则可以用异或加密:
C=A^B
在数据中保存C就行了.
用的时候:
A=B^C
即可取得原加密的内容,所以只要知道密钥,就可以完成加密和解密
根据原理可以推导出,加密函数也自带解密功能。
  1. if(key==2)
  2. {
  3.     MessageBox(XXX,"注册失败!","err",MB_OK);
  4. }else
  5. {
  6. //这个只是假的成功吧。
  7.     MessageBox(0,"注册成功!","err",MB_OK)
  8. }
复制代码
注意观察第一个参数,这个是我们的后门标记。
逆向者一般都会跳过带”失败“特征的分支…..
假如我们HOOK MessageBoxA这个函数,并留下了进入验证机制的后门….
在 MessageBox(XXX,”注册失败!”,”err”,MB_OK); 中触发后门,触发条件是XXX=后门设置的某个值…
一旦跳过了这一个分支,那么就等于跳过了进入注册机制的路…..呵呵,你懂得…
然后显示注册失败什么的 就可以在验证完后改变MessageBox的参数现实提示。

HOOK操作代码最后放到隐秘一点的地方,比如异常处理函数..
下面是完整的验证DLL代码,写地很简单。
  1. //By
  2. void HookMessageBox();
  3. BOOL APIENTRY DllMain( HMODULE hModule,
  4.                        DWORD  ul_reason_for_call,
  5.                        LPVOID lpReserved
  6.            )
  7. {
  8.   switch (ul_reason_for_call)
  9.   {
  10.   case DLL_PROCESS_ATTACH:
  11.     HookMessageBox();
  12.   case DLL_THREAD_ATTACH:
  13.   case DLL_THREAD_DETACH:
  14.   case DLL_PROCESS_DETACH:
  15.     break;
  16.   }
  17.   return TRUE;
  18. }
  19. char *err = "注册失败!";
  20. char *regok ="注册成功!";
  21. char * FunAddr = NULL;
  22. void HookMessageBox();
  23. int __stdcall REG(int key)
  24. {
  25.   if (key==0xcccccccc)
  26.   {
  27.     return 1;
  28.   }else
  29.   {
  30.     return 0;
  31.   }
  32. }
  33. __declspec(naked) void MyMessagebox()
  34. {
  35.   _asm
  36.   {
  37.       push ebp
  38.       mov ebp,esp
  39.       cmp [ebp+20],0xAA
  40.       jne next
  41.       push [ebp+8]
  42.       call REG
  43.         push ebx
  44.       mov ebx,0
  45.       mov [ebp+8],ebx
  46.       mov [ebp+20],ebx
  47.       pop ebx
  48.       cmp eax,1
  49.       jne iferr
  50.       mov eax,regok
  51.       mov [ebp+12],eax
  52.       jmp next
  53. iferr:
  54.     mov eax,err
  55.     mov [ebp+12],eax
  56. next:
  57.     mov eax,FunAddr
  58.       add eax,5
  59.     jmp eax
  60.   }
  61. }
  62. void HookMessageBox()
  63. {
  64.   unsigned char JmpCode[5];
  65.   int addr2;
  66.   DWORD oldProtect;
  67.   FunAddr=(char *)GetProcAddress(GetModuleHandleA("User32.dll"),"MessageBoxA");
  68.   if (!FunAddr)
  69.   {
  70.     MessageBoxA(0,"error!","",MB_OK);
  71.     ExitProcess(-1);
  72.   }
  73.   JmpCode[0]=0xE9;
  74.   addr2 = (int)MyMessagebox-(int)FunAddr-5;
  75.   *((int*)&JmpCode[1])=addr2;
  76.   VirtualProtect(FunAddr,5,PAGE_EXECUTE_READWRITE,&oldProtect);
  77.   memcpy(FunAddr,JmpCode,5);
  78.   VirtualProtect(FunAddr,5,oldProtect,NULL);
  79. }
复制代码

评分

参与人数 15HB +20 THX +4 收起 理由
小声点我布隆 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
sjtkxy + 1 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
24567 + 2
Soul1999 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 2
l278785481 + 1
lies + 1
mengzhisuoliu1 + 1
mengzhisuoliu + 1
m0bil3_xT + 1 评分=感恩!简单却充满爱!感谢您的作品!
Aniz + 1 学破解论坛1周年了,感谢大家的付出与关注。学破解论坛助你呼风唤雨!!!
官理猿 + 3 + 1 躲猫猫抓咪咪

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
灰色 发表于 2015-9-28 16:32 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
wakichen 发表于 2015-9-28 19:16 | 显示全部楼层

出个视频啊
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
大鸿 发表于 2015-9-29 08:28 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| king 发表于 2015-10-30 14:10 | 显示全部楼层

既然没人评分,哎
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
52xiaoqiang 发表于 2016-1-15 00:44 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
含笑半步癫 发表于 2020-4-21 22:15 | 显示全部楼层

大神能帮我逆向不,数据在服务器不知咋解决,有偿加球球号    一九五九九三零九五三
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-3-26 05:06 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
af521 发表于 2022-11-24 14:10 | 显示全部楼层

感谢版主的分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2022-12-11 16:21 | 显示全部楼层

这个必须要收起来,非常实用
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表