某软件服务端和控制台等三个程序,分别用穿山甲的三种方式进行保护,现在已经脱掉了其中两个软件,还有最后一个采用的保护方式如下:
Protected Armadillo
<-Find Protect
Protection system (Digital River)
<Protection Options>
Debug-Blocker
CopyMem-II
Memory-Patching Protections
<Backup Key Options>
Fixed Backup Keys
<Compression Options>
Better/Slower Compression
<Other Options>
Allow Only One Copy
我参照前论坛相关的教程:http://www.unpack.cn/viewthread.php?tid=54269 和 看雪的这篇帖子:http://bbs.pediy.com/showthread.php?t=53465
基本将壳脱掉了,但修复输入表遇到了问题,软件使用系统文件的输入表修复了,应该没有错误,但软件加载了两个自己的DLL,加载地址是不固定的,所以修复输入表后,运行时由于那两个DLL的地址是变化的,程序运行时出错,参照下面内容:
这是跳过加密得到的输入表信息:
005DB798 01D11500 WINMAI_1.CRYPTO_set_id_callback
;这是软件自己的一个DLL
005DB79C 01D114A0 WINMAI_1.CRYPTO_num_locks
005DB7A0 01D114D0 WINMAI_1.CRYPTO_set_locking_callback
005DB7A4 01158A60
005DB7A8 1000FED0 WINMAIL_.SSLv23_server_method
;这是软件自己的另一个DLL
005DB7AC 1001C200 WINMAIL_.SSL_CTX_ctrl
005DB7B0 1001AE00 WINMAIL_.SSL_new
005DB7B4 1001CA20 WINMAIL_.SSL_CTX_new
005DB7B8 1001CDC0 WINMAIL_.SSL_CTX_free
005DB7BC 1001D640 WINMAIL_.SSL_get_error
005DB7C0 1001BF30 WINMAIL_.SSL_write
005DB7C4 1001BE80 WINMAIL_.SSL_read
005DB7C8 10025C20 WINMAIL_.SSL_library_init
005DB7CC 1001E2C0 WINMAIL_.SSL_load_error_strings
005DB7D0 1001BC20 WINMAIL_.SSL_CTX_check_private_key
用OD加载修复的程序变成下面的了:
005DB794 011589F0
005DB798 01D11500
;这里根本找不到对应的地址了
005DB79C 01D114A0
005DB7A0 01D114D0
005DB7A4 01158A60
005DB7A8 1000FED0 winmail_.1000FED0
;这里也根本找不到对应的地址了
005DB7AC 1001C200 winmail_.1001C200
005DB7B0 1001AE00 winmail_.1001AE00
005DB7B4 1001CA20 winmail_.1001CA20
005DB7B8 1001CDC0 winmail_.1001CDC0
005DB7BC 1001D640 winmail_.1001D640
005DB7C0 1001BF30 winmail_.1001BF30
005DB7C4 1001BE80 winmail_.1001BE80
005DB7C8 10025C20 winmail_.10025C20
005DB7CC 1001E2C0 winmail_.1001E2C0
005DB7D0 1001BC20 winmail_.1001BC20
005DB7D4 10023D30 winmail_.10023D30
005DB7D8 10023770 winmail_.10023770
005DB7DC 1001B300 winmail_.1001B300
请教各位前辈,像这种情况应该如何修复输入表,或者是我脱壳有问题?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)