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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
neoFelhz's Channel | 山雨欲来风满楼
https://t.me/Tooruchan_TechComen/15655 #火星救援 https://lab.nfz.moe/sinaimg.html 和 https://i-meto.com/weibo-pic-author/ 了解一下?
进制换算算法有点奇特啊,还专门为这种情况优化过了

"提取图片文件名前 8 位,16 进制转成 10 进制后就可以得到用户 uid"

function idx(c) {
c = c.charCodeAt();
if (c >= 48 && c <= 57) return c - 48;
if (c >= 97 && c <= 122) return c - 97 + 10;
return c - 65 + 36;
}

function getUid(url) {
url = url.replace(/\.\w+$/g, '');
var hash = url.match(/[0-9a-zA-Z]{32}$/);
if (hash == null) return '';

hash = hash[0].slice(0, 8);

var uid = 0;
if (hash[0] == '0' && hash[1] == '0') k = 62;
else k = 16;
for (i = 0; i < 8; i++)uid = uid * k + idx(hash[i]);

var url = "https://weibo.com/u/" + uid;
return '<br><span>图片上传者:</span><a href="' + url + '" target="_blank">' + url + '</a>';
}
duangsuse::Echo
进制换算算法有点奇特啊,还专门为这种情况优化过了 "提取图片文件名前 8 位,16 进制转成 10 进制后就可以得到用户 uid" function idx(c) { c = c.charCodeAt(); if (c >= 48 && c <= 57) return c - 48; if (c >= 97 && c <= 122) return c - 97 + 10; return c - 65 + 36; } function getUid(url) { …
注, @metowolf 的 Ghost 博客上使用了相同的算法,由于 METO 曾是 ACM 选手且一直爱好系统安全的原因暂时认定是 METO 写的

奇特的 Hack 呢,其实 JavaScript 是有内部进制换算功能的

Number.parseInt('0x64', 16);
Number.parseInt(0x64.toString(16), 16);
Forwarded from dnaugsuz
Lua 的 HTTP 库应该毕竟容易入门的、JSON 库也可以说很轻易就能明白,毕竟也是一门知名语言

请参考 https://github.com/duangsuse/AndroLuaPro/blob/master/app/src/main/lua/bmob.lua

这个是 BMOB 的 HTTP API 绑定,别人写的,我给出一些性能提升建议

local pairs, tostring, print, dump, xpcall = pairs, tostring, print, dump, xpcall

使用 local 变量的速度往往比 Global 快

bmob.lua#L33
local ret = {}
return table.concat(ret, "&")


请使用 String 缓冲器,Lua 的字符串是内化的,这意味着他们不可变,直接往上连接字符会创建出很多垃圾字符串

另外,如果要在循环中创建很多个表,并且知道表大概要达到的大小的话可以预先填充这个表,因为 Lua 官方解释器的 hash 碰撞重散列操作和表扩容会带来额外时间开销

local tbl =  {1, 2, 3}
This media is not supported in your browser
VIEW IN TELEGRAM
function example() {
something();
// (
function () {
console.log('Foo');
} /* ) */ ();
return this;
}
ReturnStatement = return (#(spacesNoNL ~space) Expression<withIn>)? #sc

CallExpression
|MemberExpression Arguments -- memberExpExp
FunctionExpression
| function "(" FormalParameterList ")" "{" FunctionBody "}" -- anonymous

Arguments = "(" ListOf<AssignmentExpression<withIn>, ","> ")"
Rachel 碎碎念
想趁着放假试试用 Shizuku Manager 开发,Ubuntu 打不开了…悲伤的故事 — Rachel (ノД`)シクシク (@tangrui003) September 23, 2018
#tech #android

科普一下 Shizuku
@RikkaW 开发的软件框架

在 Android 系统中,许多 API 需要应用是系统应用或拥有框架签名才能调用。
Shizuku 可以使普通应用可以通过与自己的服务交互来调用自身无权调用的 API

不过,为了避免 Shizuku Server 被恶意应用调用,普通应用需要先向 Shizuku Manager 请求授权后才能使用。

Shizuku 可以在拥有 root 访问权限或者 ADB 的设备上使用。

Riru

Riru 是一个简单但有用的东西。仅需要替换一个系统文件,就可以让 Riru 模块们进入应用进程或系统服务进程并执行他们的代码。

Riru 可以用来在某些特定应用里暴力替换掉一些原生函数逻辑,类似于 Xposed,也是 @RikkaW 开发
duangsuse::Echo pinned «#dev #android #recommended #frontend #web Android 圆形展开/关闭动画 Android 控件圆角 CSS 圆圈背景 { border-radius: 3px; // webkit -webkit-border-radius // gecko -moz-border-radius }»
YSC 的频道
推广一下我正在开发的一个软件 NoScreenCap,可以将窗口设为禁止截图。支持 Win7 及以上系统。 https://github.com/ysc3839/NoScreenCap 目前只有命令行版本。
(代码注入

支持 Windows 所支持的两种 x86、x86_64 架构
是直接注入机器代码(redpill) 然后 CreateRemoteThread() 执行

// bool SetWindowDisplayAffinityForExternelProcess(HWND hWnd, DWORD affinity)

void *code_address = VirtualAllocEx(hProcess, nullptr, CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (code_address)

// HANDLE WriteAndExecuteCode(HANDLE hProcess, void *code_address, void *code, size_t code_size, void *parameter = nullptr)

CreateRemoteThread(hProcess, nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(code_address), parameter, 0, nullptr);
duangsuse::Echo
(代码注入 支持 Windows 所支持的两种 x86、x86_64 架构 是直接注入机器代码(redpill) 然后 CreateRemoteThread() 执行 // bool SetWindowDisplayAffinityForExternelProcess(HWND hWnd, DWORD affinity) void *code_address = VirtualAllocEx(hProcess, nullptr, CODE_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);…
(不过,不知道不注入机器代码而只是 CreateRemoteThread 然后用本进程的 procedure 可不可能实现(就不需要再专门放置已编译机器代码了),
据说可能可以,但要在别的进程注入自己使用的字符串引用

可惜这里没有 Windows 环境所以不可能测试了
duangsuse::Echo
(也是在 @AndroidDevCN 里我知道 plt 是 Procedure Linkage Table 的意思( objdump -d -j .plt /lib64/libc.so.6
Android Dev CN 有不少都是真 dalao,包括冯老师、Ghost Flying、Rikka 等
可不仅仅会个 Android 前端(当然他们是会自己绘制 View、创建 Animation 以及讨论常规 OOP 编程问题哪种解决方式更优雅的大佬级别),对 Andriod JNI 甚至 Android 底层都有所了解
(好了谈正事 #project

放假只放中秋节一天...

整个的列表太大这里就不说了,只看假期做的
首先是一个 C 头文件, chinese.h

“中文编程” 233333 🙈 当然只是语法结构上的,C 不支持非 ASCII 码内的标识符,百搭

然后是 Gekyll
#backend #recommended

推荐两款 ANTLR 386 语法文件

MASM x86 汇编器语法
Intel 8086 汇编器语法.

.386
.model flat, stdcall
option casemap: none

include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib

.data
szCaption db 'Hello', 0
szText db 'Hello, World!', 0

.code

start:
invoke MessageBox, NULL, offset szText, offset szCaption, MB_OK
invoke ExitProcess, NULL
end start