能力值:
(RANK:410 )
|
-
-
2 楼
没可能吧。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
楼主 D F11A24 看看去,看看那个位置是什么
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
woohyuk :
你说的很对,可能我没有描述完整。执行完这句寄存器情况是:
EAX 00F11A24 ASCII "3333"
ECX 7C80240F kernel32.7C80240F
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDA000
ESP 0013FF68
EBP 0013FFC0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 0040C128 Setup.0040C128
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SERVICE_DOES_NOT_EXIST (00000424)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BCE0 01050104 00620064
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 1372 Prec NEAR,64 掩码 1 1 0 0 1 0
===========================================
此时eax=00F11A24,执行 D 00F11A24 后,在数据区看到地址00F11A24的值是
00F11A24 33 33 33 33 3333
这就对了,3333出来了。但是我无法理解00F11A24是什么,如何赋值的?如果想改变3333为其他值,是修改地址[00F11A24]的值吧,[00F11A24]又在哪里找到呢,是动态的吧。该程序的ASCII 参考字串全部加密了,搜索不出来的。
|
能力值:
(RANK:210 )
|
-
-
5 楼
你这样一说不就很好理解了
40E8FC中保存的是24 1A F1 00 因为是dword,所以就是 F11A24,这个就是字符串'333'的首地址
mov eax,[40E8FC]就等于 mov eax,F11A24
此时eax中保存的数据就是333的首地址 od中当然会显示333了
|
能力值:
( LV8,RANK:130 )
|
-
-
6 楼
呵呵,夜猫子真多呀,都没睡,
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
如果此时不希望eax是ASCII "3333",那该怎么修改呢?3333是加密了的,字串搜索不到。F11A24不是程序的地址啊,是内存的地址吧,我该怎么办呢?添加一个附加数据段,然后修改[40E8FC]为附加数据地址?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
可以直接修改此句
0040C123 mov eax, 401000
假设401000为你需要的字串的首地址
|
能力值:
(RANK:210 )
|
-
-
9 楼
[QUOTE=flong;339162]如果此时不希望eax是ASCII "3333",那该怎么修改呢?3333是加密了的,字串搜索不到。F11A24不是程序的地址啊,是内存的地址吧,我该怎么办呢?添加一个附加数据段,然后修改[40E8FC]为附加数据地址?[/QUOTE]
在命令行插件里面输入 d eax 或者0F11A24
就可以看到3333了 在内存中显示是33 33 33 33...
然后就可以修改了
我不懂你说的程序地址是什么意思 你看到的所有东西都在内存中吧,都是内存地址
F11A24这么大的地址就应该是程序自己申请的 呵呵
|
|
|