软件来源:网络 软件类型:dll 软件下载:https://www.52pojie.cn/thread-740169-1-1.html 理由:刚好手里有这个软件,这两天泡52pojie论坛又见到上面的文章,所以干脆贴出来跟大家娱乐娱乐。 难度系数:由易到较难 鸣谢:特别是感谢本坛@cndml提供了一个脚本,该脚本将出现在篇(二),根据我的调试更改了脚本的一点小瑕疵。 工具:OD;ExeinfoPE_V0044prev3;Import REConstructor v1.7e 先查壳,ThemIDA & WinLicense 2.0 - 2.1,准备脱了她。OD,拖入TE_Formula.dll,F9跑起,跑起来后有两种结果1、程序初始化;2、程序直接执行。 停在这里,没有跑飞,那就是第一种情况。接下来,就在程序空间找找api,看图 恭喜,良心软件,看到这样的图,可以确定api没有加密。你就把iat找出来。在上图中随便选一个api,我就选第一个 地址=1000111D 反汇编=call 7C80A055 目标文件=kernel32.LoadResource双击返回调试窗口,看图 重新加加载,F9,断在 取消硬件断点,alt+M F9,看信息窗口 Ecx我选中的api,ds:[1007E274]存放位置,iat所在地址1007E274,取消所有断点,重新加在程序,F9在数据窗口查看地址1007E274, 看到好多api,iat位置找到,本程序iat:起始:1007E000;结束:1007E428;大小:428 接下来找OEP,方法: alt+m在10001000段下内存写入断点,然后shift+f9,停在 102AD848 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi] 这行代码上,取消内存写入断点后,命令行输入bp GetProcessHeap+c,然后f9, 程序停在7C80AC6D C3 retn 取消这行代码上的断点,再然后alt+m在10001000段下f2断点,然后f9, 程序停在1006BA06 837C24 08 01 cmp dword ptr ss:[esp+0x8],0x1 OEP地址:1006BA06然后dump 接下来 跑一下脱壳出来的文件TE_Formula_dump_.dll 运行,没有出现异常 脱完之后是个什么东西,我也不知道 TE_Formula.dll就脱完了,脱她就如同嚼蜡。这文章写出来就像口水文章,了无新意。 接篇 ( 一 ) , custom.bin 来源不描述。 先查壳, Them IDA & WinLicense 2.0 - 2.1 ,脱了她。 方法见篇 ( 一 ) IATstart add:100E8000 IATend add:100E8524 Size:524 找到 OEP add:100C509D 来看一下模块间的调用 : N 多 call xxxxxxxx, 毫无疑问 api 已经加密 到 IAT 表看看 先解密 api 找到 magic_jmp magic_jmp add:105E6E41 找到 magic_store magic_store add:10489252 用 @ cndml 脚本”THEMIDA iat 修复脚本 by cndml.txt ”,( 为了尊重 cndml 的劳动和版权 , 需要脚本的请找 cndml , 再一次感谢 cndml 提供脚本 ), 一通等待 停在 OEP add:100C509D api 解密成功 . dump 下来 . ImpREC 修复 . ReloX 重定位 跑一下脱壳出来的文件 custom_dump__.dl l 运行,出现异常. 重新加载 custom_dump__.dll od 开 run 跟踪,开记录到文件, ctl+F8 跑起 出现上面异常 看跟踪记录 103C16FC 主 add esi,0x7FFFFFFF ; FL=CA, ESI=7FFFFFFE 103C1702 主 xor esi,0x4 ; FL=P, ESI=7FFFFFFA 103C1708 主 mov esi,0x400 ; ESI=00000400 103C170D 主 or esi,edx ; ESI=0000A55F 103C170F 主 add esi,0x20 ; FL=0, ESI=0000A57F 103C1715 主 sub esi,0x1C ; FL=P, ESI=0000A563 103C171B 主 add esi,edi ; FL=A, ESI=10384CD0 103C171D 主 or esi,0x800 ; FL=0 103C1723 主 sub esi,0x1F ; FL=PA, ESI=10384CB1 103C1729 主 or esi,0x400 ; FL=P 103C172F 主 and esi,0x80000000 ; FL=PZ, ESI=00000000 103C1735 主 or esi,0x28 ; FL=P, ESI=00000028 103C173B 主 or esi,edi ; FL=0, ESI=1037A76D 103C173D 主 sub esi,0x28 ; ESI=1037A745 103C1743 主 mov edi,0x1 ; EDI=00000001 103C1748 主 xor dx,0xA5E8 ; FL=P, EDX=000000B7 103C174D 主 xor edi,ecx ; FL=0, EDI=0F6A303E 103C174F 主 add edx,ebp ; FL=P, EDX=1037A787 103C1751 主 mov edx,dword ptr ds:[edx] ; EDX=00CD76EC ; // 下 F2 断点 103C1753 主 add edi,0x80000000 ; FL=S, EDI=8F6A303E 103C1759 主 push dword ptr ds:[edx] ; ECX=0013F31C, ESP=0013F2F8 7C92E480 主 mov ebx,dword ptr ss:[esp] ; EBX=0013F300 7C92E483 主 push ecx ; ESP=0013F2F4 7C92E484 主 push ebx ; ESP=0013F2F0 7C92E485 主 jmp 0016003C 0016003C 主 pushad ; ESP=0013F2D0 0016003D 主 pushfd ; ESP=0013F2CC 0016003E 主 add ecx,0x4 ; FL=A, ECX=0013F320 00160041 主 mov esi,ecx ; ESI=0013F320 00160043 主 mov edx,ecx ; EDX=0013F320 00160045 主 mov edi,0x160000 ; EDI=00160000 0016004A 主 mov ecx,0x18 ; ECX=00000018 0016004F 主 cld 00160050 主 rep movs byte ptr es:[edi],byte ptr ds:[esi]; ECX=00000000, ESI=0013F338, EDI=00160018 00160052 主 mov esi,0x160018 ; ESI=00160018 00160057 主 mov edi,edx ; EDI=0013F320 00160059 主 mov ecx,0x18 ; ECX=00000018 0016005E 主 rep movs byte ptr es:[edi],byte ptr ds:[esi]; ECX=00000000, ESI=00160030, EDI=0013F338 00160060 主 popfd ; FL=S, ESP=0013F2D0 00160061 主 popad ; ECX=0013F31C, EDX=00CD76EC, ESP=0013F2F0, ESI=1037A745, EDI=8F6A303E 00160062 主 call 7C94A824 ; FL=PZ, EAX=00000000, ECX=7D79F598, EDX=00000000, EBX=00000000, ESP=0013FEA0, EBP=0013FF9C, ESI=7C92DE6E, EDI=00001001 LOADDLL 已终止 : Can't Load LoadDll.dll KiFastSystemCallR>retn RUN 跟踪已关闭 到上面 附近的应用程序里下 F2 断点,不要到系统指令里下,根据经验,我下到 103C1751 位置 , 重新加载 F9, 断在 103C1751 , F7 下来到 103C1759 ,看信息窗 信息窗 ds:[00CD76EC]=??? 产生异常的地方,新开 OD 加载原始程序 custom.bin , 103C1759 下硬件断点, F9, 断在 103C1759 ,,看信息窗 信息窗 ds:[00CA76EC]=500875FF 看 ds:[00CA76EC] 数据窗口 什么东西??根据经验,应该是一些系统代码,复制一行看看是哪个系统程序的代码 回到 custom_dump__.dll , ALT+M User32 文件的代码,原来程序在找 User32 的东西,没有,怎么办,给她,找个空的地方补上 103C1759 处 10610528 处: 保存OD 加载, F9 , 运行,搞定,收工。 脱完之后是个什么东西,我也不知道 custom.bin 就脱完了,篇 ( 二 ) 也到收尾了。这样才让我们真正见识到了软件作者的功力,过瘾, 软件那处验证他不走 createfile 的通用方式,他要走看是否破坏他的 malloc ,很出彩。 最终还是希望大家用正版,所以很多朋友每次贴子给我留言,希望我放出 破解 版,我原则上不提供。主要是软件作者要开发一个程序真的不容易。 |
通达信用户完全加密公式破解器之脱壳篇(1-2)
特别重申:本篇文档资料为 “好网角收藏夹” 注册用户(收藏家)上传共享,仅供参考之用,请谨慎辨别,不代表本站任何观点。
好网角收藏夹为网友提供资料整理云存储服务,仅提供信息存储共享平台。
如发现不良信息删除、涉嫌侵权,请 点击这里举报 ,或发送邮件到:dongye2016qq.com。
如发现不良信息删除、涉嫌侵权,请 点击这里举报 ,或发送邮件到:dongye2016qq.com。