首页
社区
课程
招聘
[旧帖] [原创]申请邀请码_手脱tmd学习 0.00雪花
发表于: 2011-3-23 00:36 1659

[旧帖] [原创]申请邀请码_手脱tmd学习 0.00雪花

2011-3-23 00:36
1659
小菜是刚开始学习破解,也学习写写文章,以下是在下学习破解用tmd加密的 Efang_Ru.dll 的过程,希望能给初学者一些帮组,大侠们请飘过。废话不多说开始破解
用peid查壳:Themida/WinLicense V1.8.X-V1.9.X Other -> Oreans Technologies   * Sign.By.fly * 20080131 *
OD 载入

10040014 >  B8 00000406     mov eax,6040000
10040019    60              pushad
1004001A    0BC0            or eax,eax
1004001C    74 68           je short Efang_Ru.10040086
1004001E    E8 00000000     call Efang_Ru.10040023
10040023    58              pop eax
10040024    05 53000000     add eax,53
10040029    8038 E9         cmp byte ptr ds:[eax],0E9
1004002C    75 13           jnz short Efang_Ru.10040041
1004002E    61              popad
1004002F    EB 45           jmp short Efang_Ru.10040076
10040031    DB2D 37000410   fld tbyte ptr ds:[10040037]
10040037    FFFF            ???                                      ; 未知命令
10040039    FFFF            ???                                      ; 未知命令
1004003B    FFFF            ???                                      ; 未知命令
1004003D    FFFF            ???                                      ; 未知命令

alt+m 在Efang_Ru CODE 段下内存写入断点,按shift + F9运行到下面代码断下

1012FD03    F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]   再按F7+F8运行,如果直接运行将会等比较久的时间
1012FD05    C685 7D315906 5>mov byte ptr ss:[ebp+659317D],56
1012FD0C    68 396D1FD4     push D41F6D39
1012FD11    FFB5 DD055906   push dword ptr ss:[ebp+65905DD]
1012FD17    8D85 16E75D06   lea eax,dword ptr ss:[ebp+65DE716]
1012FD1D    FFD0            call eax
1012FD1F    68 00800000     push 8000
1012FD24    6A 00           push 0
1012FD26    52              push edx
1012FD27    FFD0            call eax
1012FD29    8BC0            mov eax,eax
1012FD2B    83BD DD065906 0>cmp dword ptr ss:[ebp+65906DD],0
1012FD32    75 09           jnz short Efang_Ru.1012FD3D
1012FD34    83BD 65065906 0>cmp dword ptr ss:[ebp+6590665],0
1012FD3B    74 19           je short Efang_Ru.1012FD56
1012FD3D    50              push eax
1012FD3E    53              push ebx
1012FD3F    8BC0            mov eax,eax
1012FD41    B8 21040000     mov eax,421
1012FD46    8985 15085906   mov dword ptr ss:[ebp+6590815],eax
1012FD4C    8D9D E7045D06   lea ebx,dword ptr ss:[ebp+65D04E7]
1012FD52    FFD3            call ebx

按shift + F9运行到下面代码断下
1013245B    2933            sub dword ptr ds:[ebx],esi    在这里,取消内存写入断点
1013245D    013B            add dword ptr ds:[ebx],edi
1013245F    83C1 02         add ecx,2
10132462    83EA 02         sub edx,2
10132465  ^ 0F85 65FFFFFF   jnz Efang_Ru.101323D0
1013246B    83BD 652A5906 0>cmp dword ptr ss:[ebp+6592A65],0
10132472  ^ 0F85 45FFFFFF   jnz Efang_Ru.101323BD               
10132478    8BBD D9345906   mov edi,dword ptr ss:[ebp+65934D9]  选择这里按F4,跳出上面两个循环
1013247E    B9 74240000     mov ecx,2474
10132483    32C0            xor al,al
10132485    F3:AA           rep stos byte ptr es:[edi]
10132487    BA 6E026228     mov edx,2862026E
1013248C    8DBD 55385906   lea edi,dword ptr ss:[ebp+6593855]
10132492    B9 78000000     mov ecx,78
10132497    8DB5 EE0C6106   lea esi,dword ptr ss:[ebp+6610CEE]
1013249D    F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]

再到CODE段下内存写入断点,按shift + F9运行到下面代码断下,这里是解码输入表的地方,把EAX的值10029454记录下来,然后数据窗口跟随
取消内存写入断点
1013E402    8F00            pop dword ptr ds:[eax]
1013E404    8128 BE294465   sub dword ptr ds:[eax],654429BE
1013E40A    E9 0E000000     jmp Efang_Ru.1013E41D
1013E40F    A3 4C421DC7     mov dword ptr ds:[C71D424C],eax
1013E414    CA 6179         retf 7961
1013E417    68 BDA3508C     push 8C50A3BD
1013E41C    80AD E9050000 0>sub byte ptr ss:[ebp+5E9],0
1013E423    94              xchg eax,esp
1013E424    7D 1E           jge short Efang_Ru.1013E444
1013E426    9A 555251B9 486>call far 6548:B9515255
1013E42D    2D 0481E1A7     sub eax,A7E18104
1013E432    1C 09           sbb al,9
1013E434    0181 E9000409   add dword ptr ds:[ecx+90400E9],eax
1013E43A    0089 CA598956   add byte ptr ds:[ecx+568959CA],cl
1013E440    FC              cld

然后ctrl+g ,输入 ZwFreeVirtualMemory 确定,到达下面代码 的retn 下断点,shift + F9运行
  7C92D38E >  B8 53000000     mov eax,53
  7C92D393    BA 0003FE7F     mov edx,7FFE0300
  7C92D398    FF12            call dword ptr ds:[edx]
  7C92D39A    C2 1000         retn 10 这里下断
这时,你会看到原来数据窗口数值全部显示0的,现在已经解码如下,可以确定这里应该是输入表的地方了
地址      数值        注释
10029454  77BD18AA  version.VerQueryValueA
10029458  77BD19EF  version.GetFileVersionInfoSizeA
1002945C  77BD1A40  version.GetFileVersionInfoA
10029460  00000000
10029464  72F83757  winspool.OpenPrinterA
10029468  72F8665F  winspool.DocumentPropertiesA
1002946C  72F74D40  winspool.ClosePrinter
10029470  00000000
10029474  76322563  comdlg32.GetFileTitleA
10029478  00000000
1002947C  76D36051  iphlpapi.GetAdaptersInfo
  
再次按F9后,注意观察 edi 寄存器,此时为红色, 重复按F9,直到 edi 变为白色,这时便是返回时机,alt+f9返回到下面代码,还没到达oep
1012861A   /0F87 08000000   ja Efang_Ru.10128628
10128620   |60              pushad
10128621   |8AD7            mov dl,bh
10128623   |66:B9 BFF4      mov cx,0F4BF
10128627   |61              popad
10128628   \58              pop eax
10128629    0F85 07000000   jnz Efang_Ru.10128636
1012862F    0F89 01000000   jns Efang_Ru.10128636
10128635    F5              cmc
10128636    5A              pop edx
10128637    FC              cld
10128638    60              pushad
10128639    E8 05000000     call Efang_Ru.10128643
此时 alt+m 在 Efang_Ru 代码段 f2 下断,shift+f9 运行到下面代码断下,查看这里的代码特征像是vc7的入口代码,大功告成,这里便是oep
1001437C   .  6A 0C         push 0C
1001437E   .  68 E8BD0210   push Efang_Ru.1002BDE8
10014383   .  E8 B8120000   call Efang_Ru.10015640
10014388   .  33C0          xor eax,eax
1001438A   .  40            inc eax
1001438B   .  8945 E4       mov dword ptr ss:[ebp-1C],eax
1001438E   .  8B75 0C       mov esi,dword ptr ss:[ebp+C]
10014391   .  33FF          xor edi,edi
10014393   .  3BF7          cmp esi,edi
10014395   .  75 0C         jnz short Efang_Ru.100143A3
10014397   .  393D 987C0310 cmp dword ptr ds:[10037C98],edi
1001439D   .  0F84 B3000000 je Efang_Ru.10014456
100143A3   >  897D FC       mov dword ptr ss:[ebp-4],edi

用lordpe dump unpack.dll,打开ImportREC_fix在进程列表里选择loaddll.exe,载入后再打开efang_ru.dll,选择unpack.dll
在oep处填写 1437C,在od的数据窗口往上翻,知道遇到一大堆 数值全部是零的地方 10029000,往下翻遇到全部为零的地方 1002a028
因为是DLL基地址10000000 所以10029000-10000000 = 29000,在rva处填写 29000, 1002a028 - 10029000 = 1028,在size 处填写1028
然后点击 ‘获取输入表’,找到很多有效的输入表函数,然后点击 ‘显示无效的’,用跟踪级别一,修复了部分,直接把无效的剪切掉
修复转存文件,破解完成,文件能正常使用

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么呀,看不懂呀大哥,TMD不好玩   想学习的  去看不懂
2011-3-23 01:22
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是刚开始学习破解就脱TMD你太牛了
2011-3-23 02:34
0
雪    币: 146
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一开始就搞tmd,也不是我愿意的,一个朋友的程序就是tmd加密的,求破的,还是最新版本的,搞起来就晕了,现在tmd2.16 的,偶修复不了iat,郁闷,哪位兄弟能指点下
2011-3-23 11:22
0
雪    币: 146
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不但是iat修复不了,连oep修复都麻烦啊,
2011-3-23 16:09
0
雪    币: 111
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
确实强大,刚开始学就脱DLL了,呵呵
2011-3-24 22:18
0
游客
登录 | 注册 方可回帖
返回
//