duangsuse::Echo
717 subscribers
4.26K photos
130 videos
583 files
6.48K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
##### Gathering file information...
RUN: /home/dse/rd/bin/retdec-fileinfo -c /home/dse/liba.so.c.json --similarity /home/dse/liba.so --no-hashes=all --crypto /home/dse/rd/bin/../share/retdec/support/generic/yara_patterns/signsrch/signsrch.yara --max-memory-half-ram
Input file : /home/dse/liba.so
File format : ELF
File class : 32-bit
File type : DLL
Architecture : x86 (or later and compatible)
Endianness : Little endian
Detected tool : gold (1.11) (linker), .note section heuristic
Detected tool : GCC (4.8) (compiler), .comment section heuristic
Detected tool : GCC (4.9) (compiler), .comment section heuristic
Original language : C++

真好用
// Address range: 0x8a1 - 0x8c4
int32_t BEL(void) {
// 0x8a1
int32_t v1;
return 4 * (v1 + 2) / 3 | 1;
}


原来的版本:


function BEL (.text) {
0x8a1: push ebp
0x8a2: ebp = esp ; begin logic
0x8a4: eax = *(ebp + 8) ; v1: *(bp + 8)
0x8a7: ecx = eax + 2 ; cx := ax + 2
0x8aa: edx = 1431655766 "VUUU" ; dx := 0x55555556
0x8af: eax = ecx ; ax := ax + 2 ; cx
0x8b1: edx:eax = eax * edx ; dx, ax := ax * dx ; dx = ax * dx
0x8b3: eax = ecx ; ax := cx (ax + 2)
0x8b5: eax >>= 31 ; ax := ax shr 0x1f
0x8b8: edx -= eax ; dx := dx - ax
0x8ba: eax = edx ; ax := dx (ax * dx - ax)
0x8bc: eax <<= 2 ; ax := ax shl 0x2
0x8bf: eax += 1 ; ax++
0x8c2: pop ebp
0x8c3: ret ; give control back to caller
}


这里很清楚(反正我也看不懂这是做什么(
me 里有一个字符串: 1keatGU3dFVKlkTFZESVpmUDZlRKRHVIBXTNZEcIFFWWJUTrJVc
手动分析了一下 BEL 函数.... 我整理一下
int BEL(int a) {
// dx = 0x55555556
// ax = (int32_t) a1
// cx = ax + 2
// ax = cx // ax + 2
// dx = ax * dx // (ax + 2) * 0x55555556
// ax = cx // ax + 2
// ax = ax >> 31 // 0x1f // ax + 2 >> 31
// dx -= ax // (ax + 2) * 0x55555556 - ax + 2 >> 31
// ax = dx // ax * dx - ax
// ax << 2 // ax * 4 // 现在估计没人用这种位运算“优化”了
// ((ax + 2) * 0x55555556 - ax + 2 >> 31) * 4
// ax++
return ((a + 2) * 0x55555556 - ax + 2 >> 31) * 4
}

有没有 可能 是 这样 呢?
在测试 中(
如果真的是 int BEL(void); 那 就应该 是 (2 * 0x55555556 - ax + 2 >> 31)*4 吧(
我 Python ctypes 试了一下,


for i in range(0, 1000):
print(c.BEL(i))
1
5
5
5
9
9
9
13
13
13
17
17
17


从 1 开始遵循一个规律: 每三个数加四
但反编译出来的明显不能用...


irb(main):021:0> def bel n
irb(main):022:1> 4 * (n + 2) / 3 | 1
irb(main):023:1> end

(0..1000).each { |n| puts bel n }

3
5
5
7
9
9
11
13
13
15
17
17
19
def bel_asm(n)
ax = n
cx = ax + 2
dx = 1431655766
ax = cx
dx, ax = ax * dx
ax = cx
ax >>= 31
dx -= ax
ax = dx
ax <<= 2
ax += 1
return ax
end
This media is not supported in your browser
VIEW IN TELEGRAM
「我的技术居然不如机器」
探索出了能用的公式,实现了 liba.so!BEL (int BEL(int n))
def CoolApk::Token.bel(n)
(4 * (n - 1) / 3 | 3) + 2
end
This media is not supported in your browser
VIEW IN TELEGRAM
#tech #Lowlvl_backend duangsuse 在 decompiler 工具的帮助下(删除)取得成就:
native code 已经阻止不了我了
(当然这次就到此为止吧,还有更有意义的事情要做
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from interesting ¯\\_(ツ)_/¯
内存不够可以下载点内存.. #高科技 #ram #magic #url
http://DownloadMoreRAM.com
This media is not supported in your browser
VIEW IN TELEGRAM