初学破者,真的是不懂呀,高手千万莫笑,指点一下吧。
我的QQ:339171218 UC账号:79656864 信箱:zhouxiongfei33@tom.com
不经常上网。
软件名称:mjqchess1075.exe
软件出处:中国共享软件注册中心及各下载站。
软件简介:一个中国象棋软件,界面美丽,棋力还过得去。未注册版在使
用过程中,会隔一段时间出现要求注册的nag,停止运行20秒,是名符其实的nag。现在位于各下
载站的首位。主程序540KB。
用过的工具:trw ,olldbg,W32Dsm8.93,peid, Import REConstructor v1.6 FINAL
目标:注册码,或是爆破(去掉它的Nag)
成果:不成功
作者说是一机一码,用的是机器码
用娃娃修改的trw1.22载入,启动mjqchess1075,点击注册,
该软件竟然立即杀死trw2000。我眼睁睁地看着trw从任务栏中消失了。
其它版本的如1.23版也是不行的呀。
用侦壳软件知其为Aspack2.12。
用Aspackdie141去脱壳,显示为Aspack2.12,脱壳成功。脱壳后1.83MB,不过却
不能运行。不过现在能用w32dsm8.93反编译脱壳后的文件,看到可以显示“参考字符串”,
不过大多是乱码,没有找到出错messagebox。
修改资源,将中文改为英文,可以知道它的这个NAG,就是对话框为180,即DialogID_00B4,有很多地方会调用它,不过它根本不能运行呀,总得先解决这个问题呀!!!
那就用ollydbg-v1.10H吧,可是一按F9,运行,mjqchess1075.exe和ollydbg一块儿消失了。
看来不脱壳是无法追注册码的啦。
用冲击波知其oep入口点为:004046F4(经过测试,这是错误的)
实际经过跟踪发现其真正入口却是0040CEF4
请看脱过全过程:
启动TRW,Browse指向mjqchess1075.exe,点击Load载入,
0187:005D4001 60 PUSHA :停在这里
0187:005D4002 E803000000 CALL 005D400A :按F8跟进
0187:005D4007 E9EB045D45 JMP 45BA44F7
0187:005D400C 55 PUSH EBP
按F8后就来到这里:
0187:005D400A 5D POP EBP :停在这里
0187:005D400B 45 INC EBP
0187:005D400C 55 PUSH EBP
0187:005D400D C3 RET
一路按F10,则Return到这里:
0187:005D4008 EB04 JMP SHORT 005D400E
0187:005D400A 5D POP EBP
0187:005D400B 45 INC EBP
0187:005D400C 55 PUSH EBP
0187:005D400D C3 RET
0187:005D400E E801000000 CALL 005D4014 :按F8跟进
就会到这里:
0187:005D4014 5D POP EBP
0187:005D4015 BBEDFFFFFF MOV EBX,FFFFFFED
0187:005D401A 03DD ADD EBX,EBP
0187:005D401C 81EB00401D00 SUB EBX,001D4000
0187:005D4022 83BD2204000000 CMP DWORD [EBP+0422],BYTE +00
0187:005D4029 899D22040000 MOV [EBP+0422],EBX
0187:005D402F 0F8565030000 JNZ NEAR 005D439A (NO JUMP) :看这里,好经典呀!在这里设断
0187:005D4035 8D852E040000 LEA EAX,[EBP+042E]
0187:005D403B 50 PUSH EAX
0187:005D403C FF954D0F0000 CALL NEAR [EBP+0F4D]
0187:005D4042 898526040000 MOV [EBP+0426],EAX
0187:005D4048 8BF8 MOV EDI,EAX
0187:005D404A 8D5D5E LEA EBX,[EBP+5E]
0187:005D404D 53 PUSH EBX
0187:005D404E 50 PUSH EAX
看我设断:
bpx 005D439A回车
按F5
中断在这里:
0187:005D439A B8F4CE0000 MOV EAX,CEF4
0187:005D439F 50 PUSH EAX
0187:005D43A0 038522040000 ADD EAX,[EBP+0422]
0187:005D43A6 59 POP ECX
0187:005D43A7 0BC9 OR ECX,ECX
0187:005D43A9 8985A8030000 MOV [EBP+03A8],EAX
0187:005D43AF 61 POPA :说明快出来了。过了这一行后,0187:005D43BA 6800000000 PUSH DWORD 00会立即变成Dword 0040CEF4
0187:005D43B0 7508 JNZ 005D43BA
0187:005D43B2 B801000000 MOV EAX,01
0187:005D43B7 C20C00 RET 0C
0187:005D43BA 6800000000 PUSH DWORD 00
RET返回就到了真正的入口点
到了这里:
0187:0040CEF4 55 PUSH EBP :光标就停在这里,在这里Suspend,可以用专用脱壳工具脱壳
0187:0040CEF5 8BEC MOV EBP,ESP
0187:0040CEF7 6AFF PUSH BYTE -01
0187:0040CEF9 6830E24000 PUSH DWORD 0040E230
0187:0040CEFE 687AD04000 PUSH DWORD 0040D07A
0187:0040CF03 64A100000000 MOV EAX,[FS:00]
我将它Dump下来后,
噢,忘记了告诉各位大侠,我是在98se中进行的。
启动RecImport.exe,在OEP中填入CEF4
点击AutoSearch IAT,提示找了一些东东,
点击Get import
有一个No
右击它,Tracer Level1然后又"Show Invalid"
有一个指针错误
看:RVA 0000E200 库名 MFC42.dll ord:0320函数
RVA 00000E204 Ptr:00402390
右击它,Tracer Level2,然后又"Show Invalid”
依然无效
点击"Show Suspect"有一个函数出现
点击"Auto Trace"
居然都Yes了呀!!
点击:Fix dump
成功。
关闭所有调试工具。
启动Dump_.exe,依然没有出现启动画面呀,各大侠帮我!!!
后记:
Aspack2.12应该不难呀,可“为什么出错的总是我呀!”
谁能让它运行起来呢?Aspack2.12需要修复IAT吗?还是别的地方弄错了呢?
19:52 04-10-10
[课程]Android-CTF解题方法汇总!