ManyCam v5.0.5 简单分析
群里又在群.P.软件,于是下载一起搞下,加了 Themida 的壳,不过里边的关键代码没有 V 掉,所以还是可以很轻松的定位到关键点 :
014A1FF0 55 PUSH EBP
014A1FF1 8BEC MOV EBP, ESP
014A1FF3 A1 F032F401 MOV EAX, DWORD PTR DS:
014A1FF8 83EC 10 SUB ESP, 10
014A1FFB 85C0 TEST EAX, EAX
014A1FFD 74 1C JE SHORT ManyCam.014A201B
014A1FFF 8B40 08 MOV EAX, DWORD PTR DS:
014A2002 83F8 02 CMP EAX, 2 ; Pro 版本
014A2005 74 0B JE SHORT ManyCam.014A2012
014A2007 83F8 03 CMP EAX, 3 ; Studio 版本
014A200A 74 06 JE SHORT ManyCam.014A2012
014A200C 33C0 XOR EAX, EAX ; 未注册
014A200E 8BE5 MOV ESP, EBP
014A2010 5D POP EBP ; ntdll.77AB019D
014A2011 C3 RETN
014A2012 B8 01000000 MOV EAX, 1 ; 注册版
014A2017 8BE5 MOV ESP, EBP
014A2019 5D POP EBP ; ntdll.77AB019D
014A201A C3 RETN
看到这个代码,可想而已,整个关键点应该就是这个类对象的枚举成员,是什么类型。但是有 themida 的内存效检,所以如果修改内存代码的话,还需要搞定 themida 的内存效检,这样相对比较麻烦。
a_p 给了以下一些方案,这里简单整理下:
1.对任意代码下内存读硬件断点,跟到后逐层返回 VM_HANDLE 然后来过效检。
2. SMC 直接去搞掉效检。
3. 找到 themida 数据解密前的数据,并修正为需要Path后的数据。
以上三种体力活,不好搞,于是又有以下一些方案:
1. Dll 进去找到初始化赋值 ,然后修改赋值。
2. 定位到这个全局对象,然后直接赋值为3。
这两个方案都是直接修改内存值来达到过效检的。先说方案一的实现,a_p 哥的实现方案如下:
67001160 Qt5Core.??0QString@@QAE@ABV0@@Z// 初始化后会调用这个函数 于是在这个QT DLL的函数尾部Path汇编代码
Path 在函数尾段 ...
67232B0A 60 PUSHAD
67232B0B 9C PUSHFD
67232B0C E8 0D000000 CALL 67232B1E
// ManyCam.exe
67232B11 4D DEC EBP
67232B12 61 POPAD
67232B13 6E OUTSB ;I/O command
67232B14 79 43 JNS SHORT 67232B59
67232B16 61 POPAD
67232B17 6D INSD ;I/O command
67232B18 2E: PREFIX CS: ;Superfluous prefix
67232B19 65:78 65 JS SHORT 67232B81 ;Superfluous prefix
67232B1C 0000 ADD BYTE PTR DS:,AL
67232B1E 8B0424 MOV EAX,DWORD PTR SS: ;ManyCam.0109439C
67232B21 FF90 9B060000 CALL DWORD PTR DS: // GetModuleHandleA
67232B27 83F8 00 CMP EAX,0x0
67232B2A 74 07 JE SHORT 67232B33
67232B2C C680 E85FC900 03 MOV BYTE PTR DS:,0x3
67232B33 9D POPFD
67232B34 61 POPAD
67232B35 C2 0400 RETN 0x4
方案2 我是直接下硬件断点,中断后,读取该全局变量地址,直接对其成员赋值。
沙发,支持校长 看不懂,只知道楼上的很有名 yy11 发表于 2015-10-23 19:55
看不懂,只知道楼上的很有名
同感,看不懂NISY是非常牛的牛人!
我系统是winxp,只能跑4.x 然后晚上远程调试 lynx 的电脑操作看了一圈,5.x和4.x代码不一样,标志位地址不是固定的地址,所以补丁地址要多几行代码.判断一下释放解码完毕
6723F49A 60 PUSHAD
6723F49B 9C PUSHFD
6723F49C E8 0D000000 CALL 6723F4AE
6723F4A1 4D DEC EBP ; // ManyCam.exe
6723F4A2 61 POPAD
6723F4A3 6E OUTSB
6723F4A4 79 43 JNS SHORT 6723F4E9
6723F4A6 61 POPAD
6723F4A7 6D INSD
6723F4A8 2E: PREFIX CS:
6723F4A9 65:78 65 JS SHORT 6723F511
6723F4AC 0000 ADD BYTE PTR DS:,AL
6723F4AE 8B0424 MOV EAX,DWORD PTR SS:
6723F4B1 FF90 130D0000 CALL DWORD PTR DS: ; 获得 ManyCam.exe 内存模块地址
6723F4B7 83F8 00 CMP EAX,0x0 ; 判断是否获取到
6723F4BA 74 07 JE SHORT 6723F4C3
6723F4BC 8B80 F032C000 MOV EAX,DWORD PTR DS: ; 获取 标志位内存地址
6723F4C2 83F8 00 CMP EAX,0x0 ; 判断是否解码
6723F4C5 74 04 JE SHORT 6723F4CB
6723F4C7 C640 08 03 MOV BYTE PTR DS:,0x3 ; 根据获取到的标志位地址+偏移 修改成3
6723F4CB 9D POPFD ; 0是Free版 1是Studio版 2是Studio版 3是Enterprise版
6723F4CC 61 POPAD
6723F4CD C2 0400 RETN 0x4
太复杂了
没看懂
Manycam V5.0.5 破解版 PYG特别版 Cracked By Nisy && a__p
补丁下载:https://www.chinapyg.com/thread-81208-1-1.html
谢谢楼主分享
小伙伴都说好,不能错过! cdygr 发表于 2015-10-23 20:10
同感,看不懂NISY是非常牛的牛人!
得动手去调试下 这个软件定位关键点不难 难在如何赋值
页:
[1]
2