longlonglong 发表于 2023-2-15 16:56

缠宗老人2.10版软件一种脱壳Dump成功修复的方法

本帖最后由 longlonglong 于 2023-2-15 16:56 编辑

工具:52下的OD、Scylla - x64x86、Detect It Easy、LordPE、ReloX;
研究对象:缠宗老人2.10版;
来源:网络
理由:和谐过程中的一点心得;
软件类型:dll;
操作系统:winXP
要达到目的:Tdxw.exe公式管理器DLL正常加载
查一下壳。

软件加的是Zprotect(1.X)的壳
OD加载软件,F9,等软件完全解密后,查入口特征,查到:
109A4508    8BFF            mov edi,edi                              ; //Real OEP
109A450A    55            push ebp
109A450B    8BEC            mov ebp,esp
109A450D    837D 0C 01      cmp dword ptr ss:,0x1
109A4511    75 05         jnz short 109A4518                     ; 缠宗老人.109A4518
109A4513    E8 E6040000   call 109A49FE                            ; 缠宗老人.109A49FE
109A4518    FF75 08         push dword ptr ss:            ; 缠宗老人.<ModuleEntryPoint>
109A451B    8B4D 10         mov ecx,dword ptr ss:
109A451E    8B55 0C         mov edx,dword ptr ss:         ; 缠宗老人.109A0000
109A4521    E8 CCFEFFFF   call 109A43F2                            ; 缠宗老人.109A43F2
109A4526    59            pop ecx                                  ; ntdll.7C92118A
109A4527    5D            pop ebp                                  ; ntdll.7C92118A
109A4528    C2 0C00         retn 0xC
Microsoft Visual C/C++(2008-2010)的入口特征。
OD重新加载软件,偏移00004508下断点,F9,断下来,查看一下:
109A4513    E8 E6040000   call 109A49FE                            ; 缠宗老人.109A49FE
109A4521    E8 CCFEFFFF   call 109A43F2                            ; 缠宗老人.109A43F2
这2个call第2个call有点特别:
109A43F2    6A 10         push 0x10
109A43F4    68 48539A10   push 0x109A5348
109A43F9    E8 82050000   call 109A4980                            ; 缠宗老人.109A4980
109A43FE    8BF9            mov edi,ecx
109A4400    8BF2            mov esi,edx
109A4402    8B5D 08         mov ebx,dword ptr ss:         ; 缠宗老人.<ModuleEntryPoint>
109A4405    33C0            xor eax,eax
109A4407    40            inc eax
109A4408    8945 E4         mov dword ptr ss:,eax
109A440B    33C9            xor ecx,ecx
109A440D    894D FC         mov dword ptr ss:,ecx
109A4410    8935 20609A10   mov dword ptr ds:,esi
109A4416    8945 FC         mov dword ptr ss:,eax
109A4419    3BF1            cmp esi,ecx
进入109A43F9    E8 82050000   call 109A4980                            ; 缠宗老人.109A4980
109A4980- E9 96BF780A   jmp 1B13091B
109A4985    FA            cli
109A4986    C745 FC 0000000>mov dword ptr ss:,0x0
109A498D    C3            retn

109A4980- E9 96BF780A   jmp 1B13091B;
可执行模块, 条目 36
基址=109A0000
大小=00060000 (393216.)
入口=109AA301 缠宗老人.<ModuleEntryPoint>
名称=缠宗老人
路径=E:\NewTdxVip2020\T0002\dlls\缠宗老人2.10版.dll
找到jmp地址所在的内存映射段
地址=1B130000
大小=00001000 (4096.)将程序从内存中Dump出来,包括1B130000段,得到文件:缠宗老人2.10版_dump_SCY.dll
OD换基址加载软件,重复上面的步骤,得到第2个Dump出来的文件:缠宗老人2.10版_dump1_SCY.dll
修改2个文件的区段表,

修复:

运行Tdxw.exe,用公式管理器加载脱壳的DLL:

DLL加载失败,根据经验,可能前面jmp地址所在内存映射段与程序在内存的映射不连续,jmp地址这一段大小为1000的内存是程序动态分配的,我的思路是在OD加载程序后,在程序内存映射结束处预先分配4000大小内存:

F9,删除前面分配的大小为4000的内存,程序运行到Real OEP处自动在程序内存后面连续分配了1000大小的内存,这段内存正是jmp地址所在的内存段:

重复前面的脱壳步骤,得到2个文件,修改2个文件的区段表:

修复:

数值比前面的多。用公式管理器加载脱壳的DLL:

DLL加载成功。

whg118 发表于 2023-2-16 00:51

学习脱壳破可以,至于通达信什么缠论、MACD等各种DLL就不要讨论了,在AI+大数据分析时代,单凭几个公式赢不了的,听劝吧,及时收手,不要觉得拿几个这玩意就天下无敌,不过是又一种引人入套方法而已。

deniol 发表于 2023-2-16 02:56

寻股分金看缠山,一重缠是一重关:shutup:

yuanliu056 发表于 2023-2-15 18:13

牛人!可以发直接能用的吗

乖胖Orz 发表于 2023-2-15 18:37

牛人,,,,,,,,,,

QT2008 发表于 2023-2-15 18:42

学到了!!!

XINJIAN9 发表于 2023-2-15 18:49

太牛了,佩服

Mancoek 发表于 2023-2-15 22:16

我只想说老人家实盘的水平也一般,可能精力都用在搞这些计算机上了

zhaozhaozhao 发表于 2023-2-15 22:44


看不懂,但觉得很厉害,加油

netpeng 发表于 2023-2-16 00:08

不明觉厉!学习了
页: [1] 2 3 4 5
查看完整版本: 缠宗老人2.10版软件一种脱壳Dump成功修复的方法