能力值:
( LV2,RANK:10 )
|
-
-
2 楼
![](upload/attach/202405/89378_5ZVNBJWZVVEYF28.webp)
![](upload/attach/202405/89378_SEAG9UZ8393WNMQ.webp)
开始长试用OD的插件来激活灰色按钮,发现无济于事。 也放弃了。
|
能力值:
( LV5,RANK:65 )
|
-
-
3 楼
ADB87D test al,al jnz 这里改AL为1 就可以进入了,进入后,窗口的标题后面会多这个字样,另外 adb87d上面的CALL就是检测的核心,不过除了多了字样,没看出有什么别的区别 DELPHI的程序有DELPHI的专用的一些处理方法,不过这个程序看上去虽然没壳,但是有些东西被处理过,也不算太好弄
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
gamehack
ADB87D test al,al jnz 这里改AL为1 就可以进入了,进入后,窗口的标题后面会多这个字样,另外 adb87d上面的CALL就是检测的核心,不过除了多了字样,没看出有什么别的区别 ...
好,我试一下
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
gamehack
ADB87D test al,al jnz 这里改AL为1 就可以进入了,进入后,窗口的标题后面会多这个字样,另外 adb87d上面的CALL就是检测的核心,不过除了多了字样,没看出有什么别的区别 ...
我试了一下,的确可以进入程序,不过只是进入程序,功能还是锁住。我怎么看上面的CALL已经是DEMO了,是不是应该还往前找?莫见笑
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
caocunchao
我试了一下,的确可以进入程序,不过只是进入程序,功能还是锁住。我怎么看上面的CALL已经是DEMO了,是不是应该还往前找?莫见笑
不是不修改直接就能进入程序吗
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
gailium
不是不修改直接就能进入程序吗
是的。我的意思是AL改为1,是在DEMO后面加了另外的字符,其他的没影响。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我觉得判断DEMO的关键点在这一些里面,程序好像还要调用一个外部HLP文件。 00ADB822 /74 15 je short CktWiz.00ADB839 00ADB824 |. |B8 CCB9AD00 mov eax,CktWiz.00ADB9CC ; ASCII "Creating Splash Window..." 00ADB829 |. |E8 26FDFEFF call CktWiz.00ACB554 00ADB82E |. |8BC6 mov eax,esi ; CktWiz.<ModuleEntryPoint> 00ADB830 |. |66:BB CAFF mov bx,0xFFCA 00ADB834 |. |E8 0B7B92FF call CktWiz.00403344 00ADB839 |> \8B5E 15 mov ebx,dword ptr ds:[esi+0x15] 00ADB83C |. 33D2 xor edx,edx ; CktWiz.<ModuleEntryPoint> 00ADB83E |. 8BC3 mov eax,ebx 00ADB840 |. E8 F7D395FF call CktWiz.00438C3C 00ADB845 |. 8D55 EC lea edx,[local.5] 00ADB848 |. 8BC6 mov eax,esi ; CktWiz.<ModuleEntryPoint> 00ADB84A |. E8 3D070000 call CktWiz.00ADBF8C
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
caocunchao
我觉得判断DEMO的关键点在这一些里面,程序好像还要调用一个外部HLP文件。
00ADB822 /74 15 je short CktWiz.00ADB839
00ADB8 ...
这个应该只是检测显示SplashWindow
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
gailium
这个应该只是检测显示SplashWindow
从这出来后是不是就显示DEMO了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
倒是解锁了一些高级功能
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
caocunchao
从这出来后是不是就显示DEMO了
Demo字符串的初始化似乎并不能绕过,没有任何判断直接执行的
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
gailium
Demo字符串的初始化似乎并不能绕过,没有任何判断直接执行的
嗯,这一点我之前没确定。望指点
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
caocunchao
[em_63]请指点一下[em_63]
有一处判断高级功能的,全局变量置1就行 另外似乎是窗体默认禁用了Save按钮,需要改窗体
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
gailium
有一处判断高级功能的,全局变量置1就行
另外似乎是窗体默认禁用了Save按钮,需要改窗体
告知一下改哪里吧大佬
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
gailium
等弄完Save一起说
另外窗体资源加密了,正在想办法解密
希望到时候告知整个过程,我主要是学习,这个东西不怎么用。有更好的同类工具。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
窗体资源是加密了吗,我一直以为是DELP某些版本就是这样
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
caocunchao
窗体资源是加密了吗,我一直以为是DELP某些版本就是这样[em_16]
是,修改B1D364字节为1,然后解密资源替换
解密脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import os
def decrypt(data, bytes_str):
v4 = 0xD7
for char in bytes_str:
v4 ^ = ord (char)
v8 = list (data)
length = len (data)
for j in range (length, 0 , - 1 ):
v8[ 0 ] ^ = v4
v4 = (j + v4) & 0xFF
v10 = ( 2 * v4) & 0xFF
v10 = ((v4 & 0x80 ) >> 7 ) | v10
v4 = v10
v8 = v8[ 1 :] + [v8[ 0 ]]
for k in range ( len (v8)):
print (f "0x{v8[k]:02x}, " , end = "")
if k % 8 = = 7 :
print ()
return bytes(v8)
def read_file(filename):
with open (filename, 'rb' ) as file :
data = file .read()
return data
def write_file(filename, data):
with open (filename, 'wb' ) as file :
file .write(data)
def decrypt_files_in_folder(folder_path):
for filename in os.listdir(folder_path):
input_filename = os.path.join(folder_path, filename)
if os.path.isfile(input_filename):
output_filename = os.path.splitext(input_filename)[ 0 ] + ".decrypted"
bytes_str = filename.lower()
data = read_file(input_filename)
decrypted_data = decrypt(data, bytes_str)
write_file(output_filename, decrypted_data)
decrypt_files_in_folder( ".\\" )
input ()
|
解密后可正常用DarkDe4分析窗体
最后于 2024-5-30 13:50
被gailium编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
gailium
caocunchao
窗体资源是加密了吗,我一直以为是DELP某些版本就是这样[em_16]
是,修改B1D364字节为1,然后 ...
厉害。我先看一下
|
|
|