吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2778|回复: 12

[原创逆向图文] 汇编逆向(五)

  [复制链接]
gmh5225 发表于 2014-12-26 00:56 | 显示全部楼层 |阅读模式

本帖最后由 gmh5225 于 2014-12-26 00:57 编辑

写这个纯属就是自己记录下自己的学习经历,没有其他的意思。
详细命令请百度谷歌 8086汇编指令


跳转以及switch


C源代码:
  1. int main()
  2. {
  3.         int a=5,b=6;
  4.         if (a==b)
  5.         {
  6.                 ++a;
  7.         }
  8.         else
  9.                 ++b;
  10.         
  11.         system("pause");
  12.         return 0;
  13. }
复制代码
OD反汇编:
  1. 008D1000 >  55              push    ebp
  2. 008D1001    8BEC            mov     ebp, esp
  3. 008D1003    83EC 08         sub     esp, 0x8
  4. 008D1006    C745 FC 0500000>mov     dword ptr [ebp-0x4], 0x5
  5. 008D100D    C745 F8 0600000>mov     dword ptr [ebp-0x8], 0x6
  6. 008D1014    8B45 FC         mov     eax, dword ptr [ebp-0x4]               ; eax=a
  7. 008D1017    3B45 F8         cmp     eax, dword ptr [ebp-0x8]               ; if (a==b)
  8. 008D101A    75 0B           jnz     short testtest.008D1027                ; 如果不相等,ZF置0,跳
  9. 008D101C    8B4D FC         mov     ecx, dword ptr [ebp-0x4]               ; ecx=a
  10. 008D101F    83C1 01         add     ecx, 0x1                               ; ecx++
  11. 008D1022    894D FC         mov     dword ptr [ebp-0x4], ecx               ; a=ecx
  12. 008D1025    EB 09           jmp     short testtest.008D1030
  13. 008D1027    8B55 F8         mov     edx, dword ptr [ebp-0x8]
  14. 008D102A    83C2 01         add     edx, 0x1
  15. 008D102D    8955 F8         mov     dword ptr [ebp-0x8], edx
  16. 008D1030    68 F4208D00     push    testtest.008D20F4                      ; ASCII "pause"
  17. 008D1035 >  FF15 A0208D00   call    dword ptr [<&MSVCR100.system>]         ; msvcr100.system
  18. 008D103B    83C4 04         add     esp, 0x4
  19. 008D103E    33C0            xor     eax, eax
  20. 008D1040 >  8BE5            mov     esp, ebp
  21. 008D1042    5D              pop     ebp
  22. 008D1043 >  C3              retn                                           ; 开辟12个字节空间供3个变量
复制代码

下面讲switch  其实就是多个if else的判断


C源代码:
  1. int main()
  2. {
  3.         int a=5;
  4.         switch (a)
  5.         {
  6.         case 1:
  7.                 a=1;
  8.                 break;
  9.         case 2:
  10.                 a=2;
  11.                 break;
  12.         case 3:
  13.                 a=3;
  14.                 break;
  15.         default:
  16.                 a=0;
  17.                 break;
  18.         }
  19.         system("pause");
  20.         return 0;
  21. }
复制代码
OD反汇编:
  1. 012E1000 >  55              push    ebp
  2. 012E1001    8BEC            mov     ebp, esp
  3. 012E1003    83EC 08         sub     esp, 0x8
  4. 012E1006    C745 FC 0500000>mov     dword ptr [ebp-0x4], 0x5               ; int a=5
  5. 012E100D    8B45 FC         mov     eax, dword ptr [ebp-0x4]               ; eax=a
  6. 012E1010 >  8945 F8         mov     dword ptr [ebp-0x8], eax               ; b=eax
  7. 012E1013    837D F8 01      cmp     dword ptr [ebp-0x8], 0x1               ; if (b==1)
  8. 012E1017    74 0E           je      short testtest.012E1027                ; 如果相等,ZF置1,跳转
  9. 012E1019    837D F8 02      cmp     dword ptr [ebp-0x8], 0x2
  10. 012E101D    74 11           je      short testtest.012E1030                ; 同上,相等跳转
  11. 012E101F    837D F8 03      cmp     dword ptr [ebp-0x8], 0x3
  12. 012E1023    74 14           je      short testtest.012E1039                ; 相等跳转
  13. 012E1025    EB 1B           jmp     short testtest.012E1042                ; 全部都不等,就是default
  14. 012E1027    C745 FC 0100000>mov     dword ptr [ebp-0x4], 0x1               ; a=1
  15. 012E102E    EB 19           jmp     short testtest.012E1049
  16. 012E1030    C745 FC 0200000>mov     dword ptr [ebp-0x4], 0x2               ; a=2
  17. 012E1037    EB 10           jmp     short testtest.012E1049
  18. 012E1039    C745 FC 0300000>mov     dword ptr [ebp-0x4], 0x3               ; a=3
  19. 012E1040 >  EB 07           jmp     short testtest.012E1049
  20. 012E1042    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0               ; a=0
  21. 012E1049    68 F4202E01     push    testtest.012E20F4                      ; ASCII "pause"
  22. 012E104E    FF15 A0202E01   call    dword ptr [<&MSVCR100.system>]         ; msvcr100.system
  23. 012E1054    83C4 04         add     esp, 0x4
  24. 012E1057    33C0            xor     eax, eax
  25. 012E1059    8BE5            mov     esp, ebp
  26. 012E105B    5D              pop     ebp
  27. 012E105C >  C3              retn                                           ; a[i]=edx=i+1
复制代码
如果switch分支过多,就会出现如下代码:
  1. 00361000 >  55              push    ebp
  2. 00361001    8BEC            mov     ebp, esp
  3. 00361003    83EC 08         sub     esp, 0x8
  4. 00361006    C745 FC 0500000>mov     dword ptr [ebp-0x4], 0x5         ; int a=5
  5. 0036100D    8B45 FC         mov     eax, dword ptr [ebp-0x4]         ; eax=a
  6. 00361010    8945 F8         mov     dword ptr [ebp-0x8], eax         ; b=eax
  7. 00361013    8B4D F8         mov     ecx, dword ptr [ebp-0x8]         ; ecx=b
  8. 00361016    83E9 01         sub     ecx, 0x1                         ; ecx=ecx-1
  9. 00361019    894D F8         mov     dword ptr [ebp-0x8], ecx         ; b=ecx
  10. 0036101C    837D F8 06      cmp     dword ptr [ebp-0x8], 0x6         ; a-1与6比较
  11. 00361020    77 49           ja      short testtest.0036106B          ; a-1>6 也就是a>7 也就是default,则跳default
  12. 00361022    8B55 F8         mov     edx, dword ptr [ebp-0x8]         ; d=b=a-1
  13. 00361025    FF2495 88103600 jmp     dword ptr [edx*4+0x361088]       ; 利用edx的数值 动态跳转
  14. 0036102C    C745 FC 0100000>mov     dword ptr [ebp-0x4], 0x1
  15. 00361033    EB 3D           jmp     short testtest.00361072
  16. 00361035    C745 FC 0200000>mov     dword ptr [ebp-0x4], 0x2
  17. 0036103C    EB 34           jmp     short testtest.00361072
  18. 0036103E    C745 FC 0300000>mov     dword ptr [ebp-0x4], 0x3
  19. 00361045    EB 2B           jmp     short testtest.00361072
  20. 00361047    C745 FC 0400000>mov     dword ptr [ebp-0x4], 0x4
  21. 0036104E    EB 22           jmp     short testtest.00361072
  22. 00361050    C745 FC 0500000>mov     dword ptr [ebp-0x4], 0x5
  23. 00361057    EB 19           jmp     short testtest.00361072
  24. 00361059    C745 FC 0600000>mov     dword ptr [ebp-0x4], 0x6
  25. 00361060    EB 10           jmp     short testtest.00361072
  26. 00361062    C745 FC 0700000>mov     dword ptr [ebp-0x4], 0x7
  27. 00361069    EB 07           jmp     short testtest.00361072
  28. 0036106B    C745 FC 0000000>mov     dword ptr [ebp-0x4], 0x0
  29. 00361072    68 F4203600     push    testtest.003620F4                ; ASCII "pause"
  30. 00361077    FF15 A0203600   call    dword ptr [<&MSVCR100.system>]   ; msvcr100.system
  31. 0036107D    83C4 04         add     esp, 0x4
  32. 00361080    33C0            xor     eax, eax
  33. 00361082    8BE5            mov     esp, ebp
  34. 00361084    5D              pop     ebp
  35. 00361085    C3              retn
复制代码
上面的代码有没有很熟悉的感觉,对于经常逆向软件的人来说是这样的。。。
太过于简单就不分析了
跳转到此结束!




评分

参与人数 28HB +53 THX +20 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
24567 + 2
对影成三人 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
一路走来不容易 + 1
Soul1999 + 1
temp + 1
冷亦飞 + 1
消逝的过去 + 2
yexing + 1
liugu0hai + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
jaunic + 1
hnymsh + 1
lies + 1
轻轻不语 + 3 + 1 评分=感恩!简单却充满爱!感谢您的作品!
geekcat + 1 + 1 论坛有你更精彩!感谢楼主!
雾里看花 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
EZ + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
逍遥枷锁 + 2 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
Scar-疤痕 + 6 + 1 评分=感恩!简单却充满爱!感谢您的作品!
阿菜 + 2 + 1 最后一段那种.都不知道怎么办..T_T
520Kelly + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!!.
Top丶邪少 + 5 + 1 评分=感恩!简单却充满爱!感谢您的作品!
Shark恒 + 6 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
雨季 + 3 + 1 评分=感恩!简单却充满爱!感谢您的作品!!.
Desire + 3 + 1 评分=感恩!简单却充满爱!感谢您的作品!
Mrsin + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!!.
Camille + 3 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Camille 发表于 2014-12-26 00:57 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Scar-疤痕 发表于 2014-12-26 09:44 | 显示全部楼层

很好的教程!有时间学习下!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
逍遥枷锁 发表于 2014-12-26 10:01 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
520Kelly 发表于 2014-12-26 13:10 | 显示全部楼层

膜拜gmh师傅、感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
wpsys 发表于 2014-12-26 14:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fcguo800 发表于 2017-11-30 14:52 | 显示全部楼层

很好的知识,继续学习中。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-2-25 02:28 | 显示全部楼层

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

全论坛发来贺电
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2022-10-10 11:30 | 显示全部楼层

牛啊!爱了爱了!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!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

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